У меня есть несколько списков разных типов, которые я пытаюсь вставить в таблицу в SQL Server через python.Но это дает мне ошибку формата строки (я думаю).Я пробовал разные способы, но все еще не могу найти способ сразу выполнить оператор вставки со списками данных.
print(type(InstanceGuid)) //uniqueIdentifier column in Table
print(type(InstanceName)) //varchar(255) column in table
print(type(ScoreList)) //float column in table
ВЫХОД:
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
Теперь я пытаюсь выполнить следующее:
config.py
import os
from easydict import EasyDict
INSERT = EasyDict()
INSERT.FIELDS = ['InstanceGuid', 'InstanceName', 'Score', 'Timerun']
TEST.INSERT_TABLE = 'xxxxxxxxxxx'
TEST.IP = 'xxx.xxxx.xxx.xx'
TEST.DB_NAME = 'xxxx'
TEST.USERNAME = 'xxxxx'
TEST.PWD = 'xxxxxxxxxx'
Insert.py
def InsertTable():
query = 'INSERT into '
query += TEST.INSERT_TABLE
query += '[' + INSERT.FIELDS[0] + '], '
query += '[' + INSERT.FIELDS[1] + '], '
query += '[' + INSERT.FIELDS[2] + '], '
# query += '[' + INSERT.FIELDS[3] + '] '
query += 'values '
query += '(%s,%s,%s)%'
return query
def storeData(InstanceGuid, InstanceName, ScoreList):
InstanceGuid = np.array(InstanceGuid)
InstanceName = np.array(InstanceName)
print(type(InstanceGuid))
print(type(InstanceName))
print(type(ScoreList))
with pytds.connect(TEST.IP, TEST.DB_NAME, TEST.USERNAME, TEST.PWD) as conn:
cursor = conn.cursor()
if conn == False:
print("Error, did not connect to the database")
else:
print("Connected to DB for Insertion")
query = InsertTable()
cursor.executemany(query +
InstanceGuid, InstanceName, ScoreList)
cursor.execute("COMMIT")
При выполнении приведенный выше метод выдает ошибку:
ОШИБКА:
TypeError: must be str, not UUID
РЕДАКТИРОВАНИЕ:
Я где-то читал, что executemany () ожидает список вместо массива, послеПри прохождении списка выдается ошибка:
operation = operation % tuple(names) ValueError: incomplete format
Изменения кода были:
def InsertTable():
query = 'INSERT into '
query += TEST.INSERT_TABLE
query += '[' + INSERT.FIELDS[0] + '], '
query += '[' + INSERT.FIELDS[1] + '], '
query += '[' + INSERT.FIELDS[2] + '], '
query += '[' + INSERT.FIELDS[3] + '] '
query += 'values '
query += '(%s,%s,%s,%s)%'
return query
with pytds.connect(TEST.IP, TEST.DB_NAME, TEST.USERNAME, TEST.PWD) as conn:
cursor = conn.cursor()
if conn == False:
print("Error, did not connect to the database")
else:
print("Connected to DB for Insertion")
query = InsertTable()
cursor.executemany(query,
(InstanceGuid, InstanceName, ScoreList, datetimeList))
cursor.execute("COMMIT")
print("Inserted Successfully")