Python - MySql. Оператор UPDATE коннектора не работает - PullRequest
0 голосов
/ 12 января 2020

У меня есть некоторые проблемы с моим оператором UPDATE с MySQL .Connector.

Мой код, видимо, иногда работает, а другие нет, и я не понимаю, почему. Я сделал тестовую функцию для одной строки, которая очень похожа на мою другую основную функцию.

import mysql.connector
from datetime import datetime

def connect(): 
    return mysql.connector.connect(host="xxxxx.xxx", user="xxx", passwd="xxxxxx", db="xxx")


def test():
    mydb = connect()
    mycursor = mydb.cursor()
    sql = "SELECT MAX(value) FROM test"
    mycursor.execute(sql)
    date = datetime.now().strftime("%d-%m-%Y %H:%M:%S")
    for x in mycursor.fetchall():
        updateSql = "UPDATE test SET date=%s WHERE value=%s"
        vals = (date, x[0])
        mycursor.execute(updateSql, vals)

        mydb.commit()
        print(vals)
        print(mycursor.rowcount)

test()

Этот код, похоже, не работает, так как напечатанное значение rowCount равно 0. Мои vals отображаются правильно: ('12-01-2020 16:47:15', 'testValue')

Однако в базе данных отображается: '00-00-0000 00:00:00'. Есть идеи, как это решить?

1 Ответ

0 голосов
/ 12 января 2020

Редактировать : только что нашел ответ.

Я использовал неправильное форматирование. date = datetime.now().strftime("%d-%m-%Y %H:%M:%S") не был правильно распознан.

Для типа DATETIME в базах данных mySql требуется следующий формат:

date = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

с указанием года в первое место, месяц во втором и день в третьем.

Если этот стандарт не соблюдается, тогда дата будет преобразована в 0000:00:00 00:00:00.

...