Пытаюсь вернуть id, только что обновленной строки, но он возвращает 0.
Код:
def select_database(sql, data):
try:
conn = MySQLConnection(user = db_user, password = db_password, host = db_host, database = db_bd)
conn.autocommit = True
cursor = conn.cursor()
cursor.execute(sql, data)
rows = cursor.fetchall()
cursor.close()
conn.close()
return rows
except Error as e:
print("Ошибка:", e)
def update_database(sql, data):
try:
conn = MySQLConnection(user = db_user, password = db_password, host = db_host, database = db_bd)
conn.autocommit = True
cursor = conn.cursor()
cursor.execute(sql, data)
lastrowid = cursor.lastrowid
cursor.close()
conn.close()
return lastrowid
except Error as e:
print("Ошибка:", e)
def insert_database(sql, data):
try:
conn = MySQLConnection(user = db_user, password = db_password, host = db_host, database = db_bd)
conn.autocommit = True
cursor = conn.cursor()
cursor.execute(sql, data)
lastrowid = cursor.lastrowid
cursor.close()
conn.close()
return lastrowid
except Error as e:
print("Ошибка:", e)
async def add_entity(entity):
sql = "SELECT * FROM entity WHERE name = %s LIMIT 1"
data = (entity["name"],)
print(data)
rows = select_database(sql, data)
#Если entity существует, обновляем
if (len(rows) == 1):
sql = "UPDATE entity SET count_subscribers = %s, description = %s, count_photos =%s, count_videos = %s, " \
"count_audio = %s, count_shared_links = %s, count_voice =%s, pinned_message_id =%s, type = %s WHERE name = %s"
data = (entity["count_subscribers"], entity["description"], entity["count_photos"], entity["count_videos"],
entity["count_audio"], entity["count_shared_links"], entity["count_voice"], entity["pinned_message_id"],
entity["type"], entity["name"])
return update_database(sql, data)
#Иначе добавляем
else:
sql = "INSERT INTO entity(address, name, count_subscribers, description, count_photos, count_videos, count_audio," \
"count_shared_links, count_voice, type, pinned_message_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
data = (entity["address"], entity["name"], entity["count_subscribers"], entity["description"], entity["count_photos"],
entity["count_videos"], entity["count_audio"], entity["count_shared_links"], entity["count_voice"],
entity["type"], entity["pinned_message_id"])
return insert_database(sql, data)
Для работы использую mysql.connector.
Думаю это происходит из-за того, что данные не обновились (нету изменений), или я неправильно понимаю работу функции lastrowid?
Временно придумал только возвращать Id запроса select
new_rows = update_database(sql, data)
if (new_rows is 0):
return rows[0][0]
return new_rows
Виртуальный выделенный сервер (VDS) становится отличным выбором
Создал поле для ввода, но текст в нем начинает печататся с центраКак исправить?
верстаю макет для обучения и столкнулся с такой задачейНа странице изначально отображается 16 карточек товара, но можно через фильтр делать...