Я использую Python 3.6. У меня есть большая таблица в MSSQL, в которой я хочу вытащить данные, обработать их на python и затем сохранить данные. В настоящее время у меня проблемы с возвращаемыми значениями sqlite и pyodbc:
import sqlite3
import pyodbc
tempConn = sqlite3.connect('example.db')
c = tempConn.cursor()
c.execute(
''' CREATE TABLE IF NOT EXISTS addresses
(
amt NUMERIC,
city text,
statecode text,
zipcode text
)
'''
)
conn = pyodbc.connect(
r'DRIVER={ODBC Driver 11 for SQL Server};'
r'SERVER=<server>;'
r'DATABASE=<database>;'
r'UID=user;'
r'PWD=password'
)
conn.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8')
conn.setdecoding(pyodbc.SQL_WCHAR, encoding='utf-8')
conn.setencoding(encoding='utf-8')
cursor = conn.cursor()
cursor.execute("SELECT TOP 10 fd.Amt, fd.City, fd.StateCode, fd.ZipCode FROM <large table> AS fd")
index = 1
rows = cursor.fetchall()
for row in rows:
print('Row Data:')
print(row)
print('')
try:
c.executemany("INSERT INTO addresses VALUES (?,?,?,?)", row)
rowcount = c.execute("SELECT COUNT(*) FROM addresses")
except sqlite3.Error as er:
print('er: ', er.Message)
print(rowcount)
Ошибка, которую я получаю:
Данные строки: (десятичное число («1000 000»), «Чикаго», «IL», «9999»)
Traceback (последний вызов был последним): файл "dataaccess.py", строка 37, в
c.executemany («INSERT INTO address VALUES (?,?,?,?)», строка) ValueError: параметры неподдерживаемого типа
Я полагаю, это потому, что возвращаемый десятичный код pyodbc вставляет "Десятичное число ('')", хотя я не знаю, как это проверить. Как мне вставить эти данные из MSSQL в sqlite в python?