Как по нажатию кнопки заносить данные в таблицу БД
Планируется с помощью библиотеки Tkinter создать виджет с несколькими кнопками.
При нажатии одной из них в уже имеющейся таблице БД будет создаваться ячейка типа INT
При нажатии на вторую в эту ячейку будет заноситься цифра.
Что есть в наличии:
- Знания о том, как создавать базы даных и таблицы в MariaDB на языке SQL
- Совсем небольшие знания по созданию виджетов с использованием библиотеки Tkinter
Не могу понять, как связать эти знания воедино, так как начал изучать SQL и Python совсем недавно.
Подскажите, пожалуйста, как следует написать код? Или посоветуйте по блокам, что и где следует расположить?
Что уже есть:
#!/usr/local/python3
# -*- coding: <utf-8> -*-
#импорт графической библиотеки
from tkinter import*
#создание окна, где будут располагаться кнопки
root = Tk()
root.title("Заносим данные в БД")
frame = Frame(width = 400, height = 200)
"Создание кнопки и соответственно события по её нажатию"
"Вот тут как раз не понимаю как связать с БД"
root.mainloop()
# импорт необходимых библиотек для работы с БД
from sqlalchemy import create_engine
import pymysql
import pandas as pd
# Устанавливаем связь с БД
db_connection = "mysql+pymysql://" + db_user + ":" + db_pwd + "@" + db_host + "/" + db_name + "?charset=" + db_charset
conn = create_engine(db_connection)
#Подключаемся к таблице в БД
df = pd.read_sql("SELECT * FROM TableName", conn)
#Записываем таблицу в excel файл
df.to_excel("/way/myWork.xlsx", index=False)
Ответы (1 шт):
Автор решения: Andrey
→ Ссылка
Вот минимальный код для добавления данных в БД.
# подключаем нужные библиотеки
from tkinter import*
import mysql.connector
# устанавливает соединение с БД
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
def save_to_bd():
"Функция для сохранения данных в БД"
a = txt_one.get()
b = txt_two.get()
mycursor = mydb.cursor()
sql = "INSERT INTO НАЗВАНИЕ_ВАШЕЙ_ТАБЛИЦЫ (НЗВАНИЕ_ПОЛЯ, НЗВАНИЕ_ПОЛЯ_2) VALUES (%s, %s)"
val = (a, b)
mycursor.execute(sql, val)
mydb.commit()
root = Tk()
root.title("Заносим данные в БД")
root.geometry('450x250')
lbl_one = Label(root, text='Введите даные').grid(row=4, column=0)
lbl_two = Label(root, text='Введите даные').grid(row=5, column=0)
txt_one = Entry(root, width=10)
txt_one.grid(row=4, column=1)
txt_two = Entry(root, width=10)
txt_two.grid(row=5, column=1)
btn_save = Button(text='Добавить в БД', command=save_to_bd).grid(row=6, column=0)
root.mainloop()