Второй экземпляр приложения Python не фиксируется в таблице MariaDBPython

Программы на Python
Anonymous
Второй экземпляр приложения Python не фиксируется в таблице MariaDB

Сообщение Anonymous »

У меня есть приложение, работающее на нескольких Raspberry Pi, использующее Python 3.12.3 со всеми последними обновлениями и MariaDB 10.5.21, работающее на отдельном выделенном Pi. Приложение получает значения ИБП через определенные промежутки времени и записывает значения в общую таблицу с помощью хранимой процедуры.
Все работает так, как ожидалось, при запуске на одном Pi, но когда оно работает на нескольких чем тот, кто первым запустится, будет единственным, кто войдет в таблицу. Если я остановлю первый, а затем перезапущу второй, то он начнет вести журнал, а первый нет.
Ниже приведен код, который я использую. DatabaseConnection() просто возвращает соединение, а фрагмент кода над ним использует это соединение. autocommit=True в DatabaseConnection() остался до того, как я добавил явный conn.commit(), но у меня возникла та же проблема до добавления фиксации, и я предполагаю, что явная фиксация не принесет вреда.Я родом из мира Windows/SQL Server/C# и просто пытаюсь перейти на него в качестве хобби с тех пор, как вышел на пенсию.
Есть идеи, что может вызвать такое поведение ?
# Save the poll value to the database
conn = DatabaseConnection()
cur = conn.cursor()
cur.execute("CALL ups_poll_ins(?, ?, ?, ?, ?, ?, ?)",(ups.PiId, ups.SerialNo, ups.Status == 'ONLINE', ups.Load, ups.BatteryCharge, ups.TimeLeft, ups.TimeOnBattery))
conn.commit()
cur.close()
conn.close()`

def DatabaseConnection():
config = configparser.ConfigParser()
config.sections()
config.read('/opt/database.ini')

return mariadb.connect(
host=config['DATABASE']['Host'],
user=config['DATABASE']['User'],
password = config['DATABASE']['Password'],
database="home_monitoring",
autocommit=True)


Подробнее здесь: https://stackoverflow.com/questions/788 ... iadb-table

Вернуться в «Python»