Я использую python 3.7 для вставки списка из нескольких значений из кадра данных panda в SQL таблицу с параметром, использующим pyob c, но всегда получаю ошибку программирования: '' ', S) ProgrammingError: (' 42000 ', "[42000] [Microsoft] [ODB C SQL Драйвер сервера] [SQL Сервер] Неверный синтаксис рядом с' kkinner '. (102) (SQLExecDirectW); [42000] [Microsoft] [ODB C SQL Драйвер сервера] [SQL Сервер] Не удалось подготовить оператор (ы). (8180) ")
python код:
import pandas as pd
import pyodbc
REQUESTOR=AllSTATUS[['Requestor']].dropna().drop_duplicates()
S=REQUESTOR.values.tolist()
con = pyodbc.connect(Driver='SQL Server',host='XXX',user='XXX',password='XXX')
cur=con.cursor()
MANAGEMENT = cur.executemany(''' SELECT
[WORKER NUMBER],
[WORKER USERNAME],
[WORKER FIRST NAME],
[WORKER LAST NAME],
[WORKER POSITION],
[SUPERVISOR WORKER NUMBER],
[ WORKER USERNAME 1] AS [SUPERVISOR NAME]
FROM #MANAGEMENT WHERE [WORKER USERNAME]=? DROP TABLE #MANAGEMENT''',S)
Вывод S: [['ANSONGOH'], ['JOY'], ['ANEO'], ['ALEX'], ['SIAO'], ['KOKK'], ['WUIYYYYUN'], ['WELIN'] ]
при попытке запустить переменную MANAGEMENT будет выдано сообщение об ошибке: '' ', S)
ProgrammingError: (' 42000 ', "[42000] [Microsoft] [ODB C SQL Драйвер сервера] [SQL Сервер] Неверный синтаксис рядом с 'kkinner'. (102) (SQLExecDirectW); [42000] [Microsoft] [ODB C SQL Драйвер сервера] [SQL Сервер] Оператор (ы) не может быть подготовлен. (8180) ")
Я пытался использовать код ниже, чтобы заменить S, но все еще получаю подобное сообщение об ошибке.
import pandas as pd
import pyodbc
REQUESTOR=AllSTATUS[['Requestor']].dropna().drop_duplicates()
params = list(tuple(row) for row in REQUESTOR.values)
con = pyodbc.connect(Driver='SQL Server',host='XXX',user='XXX',password='XXX')
cur=con.cursor()
MANAGEMENT = cur.executemany(''' SELECT
[WORKER NUMBER],
[WORKER USERNAME],
[WORKER FIRST NAME],
[WORKER LAST NAME],
[WORKER POSITION],
[SUPERVISOR WORKER NUMBER],
[ WORKER USERNAME 1] AS [SUPERVISOR NAME]
FROM #MANAGEMENT
WHERE [WORKER USERNAME]=?
DROP TABLE #MANAGEMENT''',params)
Вывод параметров: [('ANSON',), ('JOY',), ('ANDY',), ('ALEX',), ('SIAO',), ( 'KOKKK',), ('WUIYUN',)] *
при попытке запустить переменную MANAGEMENT выдается ошибка: '' ', params)
ProgrammingError: ('42000', "[42000] [Microsoft] [ODB C SQL Драйвер сервера] [SQL Сервер] Неверный синтаксис рядом с 'kkinner'. (102) (SQLExecDirectW); [42000] [Microsoft] [ ODB C SQL Драйвер сервера] [SQL Сервер] Не удалось подготовить оператор (ы). (8180) ")