python lastrowid mysql

135
21 июля 2019, 17:00

Пытаюсь вернуть 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
READ ALSO
Прижать к верхнему краю текст в input

Прижать к верхнему краю текст в input

Создал поле для ввода, но текст в нем начинает печататся с центраКак исправить?

142
Как сохранить объект HTML [дубликат]

Как сохранить объект HTML [дубликат]

На данный вопрос уже ответили:

126
Количество товара на странице, как это реализуется? Ajax?

Количество товара на странице, как это реализуется? Ajax?

верстаю макет для обучения и столкнулся с такой задачейНа странице изначально отображается 16 карточек товара, но можно через фильтр делать...

134