Ошибка арифметического переполнения, преобразовывающая выражение в дату и время типа данных

Использование %s в строке запроса не будет работать должным образом, вы можете использовать % replacement_string, но похоже, что вы хотите executemany() и MySQL сделает замену на лету. Это более безопасный и лучший способ сделать это, поэтому вы на правильном пути.

Правильный синтаксис:

import csv 
import mysql.connector

mydb = mysql.connector.connect(host="localhost", user="root", passwd="root", database="4g_hs_upgrade") 
mycursor = mydb.cursor() 
sql = "INSERT INTO test (num) VALUES (%s)" 
val = 'John' 
mycursor.execute(sql, (val)) 
mydb.commit()

Обратите внимание, что значение 'John' не очень логично для столбца с именем num, но я просто следую вашему примеру.

Вы пропустили круглые скобки, что вызвало путаницу, поскольку предполагало, что вы хотите использовать функцию замены строк в Python %s, хотя вы, вероятно, и добились этого: https://dev.mysql.com/doc /connector-python/en/connector-python-example-cursor-transaction.html

6
задан gbn 11 March 2009 в 15:19
поделиться

2 ответа

Найденный проблемой, чтобы быть, когда дата была назначена до 31.12.9999, вероятно, к большому, чтобы десятичное число обработало. Измененный от десятичного числа до плавания и каждой вещи работает как очарование.

9
ответ дан 8 December 2019 в 13:49
поделиться

В целом преобразование даты к числовому или строке, для выполнения операций даты на нем, очень неэффективно. (Преобразования относительно интенсивны, как обработки строк.) Намного лучше придерживаться просто функций даты.

Пример, который Вы даете, (я верю) снимать часть времени DateTime, следующее делает это без издержек преобразований...

DATEADD(DAY, DATEDIFF(DAY, 0, <mydate>), 0)

Это должно также избежать переполнения arithmentic...

8
ответ дан 8 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: