Найти - Пользователи
Полная версия: Не обнорвляются данные из БД MYSQL
Начало » Python для новичков » Не обнорвляются данные из БД MYSQL
1
staxbel
Добрый день, столкнулся с проблемой, программа анализирует в БД значение weight (в таблице всегда одна строка, но значение weight в ней меняется постоянно). Но программа показывает верное значение только при запуске, дальше в цикле только это значение и остается, хотя в БД значение меняется.

 conn = pymysql.connect(
    host='localhost',
    user='user',
    password='password',
    database='db'
)
cursor = db.cursor()
while True:
    cursor.execute("SELECT weight FROM table LIMIT 1")
    result = cursor.fetchone()
    if result[0] > 2000:
        print("OK")
        break
    else:
        print("Restart")
        time.sleep(5)  
        continue
cursor.close()
db.close()
ZerG
 import pymysql
import time
def check_weight():
    conn = pymysql.connect(
        host='localhost',
        user='user',
        password='password',
        database='db'
    )
    cursor = conn.cursor()
    while True:
        cursor.execute("SELECT weight FROM table LIMIT 1")
        result = cursor.fetchone()
        if result is None:  # Handle no rows returned
            print("No weight found. Waiting...")
            time.sleep(5)
            continue
        if result[0] > 2000:
            print("OK")
            break
        else:
            print("Restart")
            time.sleep(5)
            continue
    cursor.close()
    conn.close()
if __name__ == "__main__":
    check_weight()
staxbel
Не совсем понял. У меня немного код изменился, можете помочь с обновлением данных \
 import struct
import sys
import time
import datetime
import pymysql
import pymysql.cursors
import wiringpi as wp
DB_CONFIG = {
    'host': 'localhost',
    'user': 'user',
    'password': 'password',
    'database': 'db'
}
# Пины для управления реле и кнопкой
RELAY_PIN = 2 #пин реле
BUTTON_PIN = 9 #пин кнопки
# Установка соединения с базой данных
connection = pymysql.connect(**DB_CONFIG)
cursor = connection.cursor()
# Инициализация WiringPi
wp.wiringPiSetup()
# Установка пина с реле в режим OUTPUT
wp.pinMode(RELAY_PIN, wp.OUTPUT)
# Установка пина с кнопкой в режим INPUT
wp.pinMode(BUTTON_PIN, wp.INPUT)
try:
    while True:
        # Выполнение запроса для получения значения веса из первой таблицы
        cursor.execute("SELECT MAX(weight) FROM table1")
        row1 = cursor.fetchone()[0]
        row1 = int(
            row1) if row1 is not None else 0  # Преобразование значения веса в целое число или 0, если значение None
        # Выполнение запроса для получения значения веса из второй таблицы
        cursor.execute("SELECT MAX(weight) FROM table2")
        row2 = cursor.fetchone()[0]
        row2 = int(
            row2) if row2 is not None else 0  # Преобразование значения веса в целое число или 0, если значение None
       # Проверка значений и управление реле
        if row1 > 2000 or row2 > 2000:
            # Включаем реле
            wp.digitalWrite(RELAY_PIN, wp.LOW)
        else:
            # Выключаем реле
            wp.digitalWrite(RELAY_PIN, wp.HIGH)
        # Проверка нажатия на кнопку для выхода из программы
        if wp.digitalRead(BUTTON_PIN) == wp.LOW:
            break
finally:
    # Закрытие курсора, соединения с базой данных и очистка WiringPi
    cursor.close()
    connection.close()
    wp.pinMode(RELAY_PIN, wp.INPUT)
    wp.pinMode(BUTTON_PIN, wp.INPUT)
py.user.next
staxbel
Но программа показывает верное значение только при запуске, дальше в цикле только это значение и остается, хотя в БД значение меняется.
Попробуй внести открытие и закрытие курсора в тело цикла.
staxbel
py.user.next
Спасибо огромное, помогло
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB