Подскажите как постоянно отправлять данные в бд. Я написал мини-прогу которая отправляет данные в бд, но заметил один момент если подождать N время соединение разрываеться, я когда писал подобное приложение в терминале, я там использовал цикл и соединение было всегда активное, а сейчас интерфейс делаю и не знаю как это реализовать.
Мой код:
import pymysql.cursors
import pymysqlpool
from tkinter import *
# Подключение к БД
connection = pymysql.connect(host='127.0.0.1',
user='root',
password='',
db='python',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor,
autocommit=True)
root = Tk()
root.title("Считыватель Штрих кодов и комит в БД")
def func(event):
label = Label(text = name.get())
try:
with connection.cursor() as cursor:
# Отправка SQL запроса
sql = "INSERT INTO `scaner` (`number`) VALUES (%s)"
cursor.execute(sql, (label['text']))
# Сохранение изменения
connection.commit()
finally:
print(label['text'])
name_entry.delete(0, END)
root.bind('<Return>', func)
def display_full_name():
label = Label(text = name.get())
try:
with connection.cursor() as cursor:
# Отправка SQL запроса
sql = "INSERT INTO `scaner` (`number`) VALUES (%s)"
cursor.execute(sql, (label['text']))
# Сохранение изменения
connection.commit()
finally:
print(label['text'])
name_entry.delete(0, END)
name = StringVar()
name_label = Label(text="Введите штрихкод:")
name_label.grid(row=0, column=0, sticky="w")
name_entry = Entry(textvariable=name)
name_entry.grid(row=0,column=1, padx=5, pady=5)
message_button = Button(text="Отправить", command=display_full_name)
message_button.grid(row=2,column=1, padx=5, pady=5, sticky="e")
root.mainloop()
я бы сделал на вашем месте что-то вроде класса-коннектора к БД, у которого, например будет метод execute
, в котором перед исполнением будете проверять активно ли соединение с бд, если нет, то делать реконнект.
Что-то вроде такого:
class DBExecutor():
def __init__(self, **connection_params):
self._connection_params = connection_params
self._connection = None
def _connect(self):
self._connection = pymysql.connect(**self._connection_params)
def execute(self, sql, *args, **kwargs):
if not (self._connection and self._connection.ping(True)):
self._connect():
with self._connection.cursor() as cursor:
cursor.execute(sql, *args, **kwargs)
self._connection.commit()
# использование
db_executor = DBExecutor(host='127.0.0.1', user='root', password='', db='python', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor, autocommit=True)
db_executor.execute("INSERT INTO `scaner` (`number`) VALUES (%s)", ('text',))
Виртуальный выделенный сервер (VDS) становится отличным выбором
Вопрос заключается в следующем: нужно в width передать значение в ch для разных текcтовых блоков по средствам css и html, для того чтобы можно было...
Возникла необходимость в редактировании html в vscodeПроблема в том, что когда вставляю текст и хочу довести его до ума код отформатирован чёрте...
Подскажите, пожалуйста, где почитать, может где исходники есть этого *** добраВсе, что ни гуглится, так это живосайты и прочее подобное