Я хочу прочитать из таблицы MSSQL, а затем вставить в таблицу MySQL, но я не смог отформатировать результаты MSSQL, чтобы executemany
на них много
cursor.execute('select * from table') # MSSQL
rows = cursor.fetchall()
many_rows = []
for row in rows:
many_rows.append((row))
sql = "insert into mysql.table VALUES (NULL, %s) on duplicate key update REFCOLUMN=REFCOLUMN" # MYSQL
mycursor.executemany(sql, many_rows)
mydb.commit()
это дает Failed executing the operation; Could not process parameters
Failed executing the operation; Could not process parameters
Первый NULL для столбца идентификатора и% s для остальных 49 столбцов. Он работает с 1 на 1, но требует удаленного подключения
РЕДАКТИРОВАТЬ
мой пример распечатать вывод many_rows
:
[
(49 columns' values, all string and separated by comma),
(49 columns' values, all string and separated by comma),
(49 columns' values, all string and separated by comma),
...
]
Я смог исправить мою проблему с добавлением данных, как показано ниже:
many_rows.append((list(row)))
Вам нужно иметь переменные вне "", иначе попытайтесь поместить null как varchar в базу данных sql, а null в python равен None
. Часто None
в sql из python является проблемой, поэтому личное предложение - сделать variable = None
и вставить туда переменную, чтобы избежать проблем.
Итак: x = None sql = "insert into mysql.table VALUES("+x+") on duplicate key update REFCOLUMN=REFCOLUMN"
и если это доставляет вам проблемы, поместите "" в str() так:
sql = str("insert into mysql.table VALUES("+x+") on duplicate key update REFCOLUMN=REFCOLUMN")'
Кроме того, вы не определили %s
поэтому я понятия не имею, что вы пытаетесь поместить туда, но я бы предложил либо использовать версию {}.format(variable)
чтобы поместить ее в строку, либо определить переменную и попробовать ее так, чтобы путь :)
Надеюсь это поможет! (и надеюсь, что я прав и не трачу свое время!)