Я пытаюсь передать список, как показано ниже на SQL-запросПередача списка значений из Python к статье В части SQL-запроса
x = ['1000000000164774783','1000000000253252111']
Я использую SQLAlchemy и pyodbc для подключения к sql:
import pandas as pd
from pandas import Series,DataFrame
import pyodbc
import sqlalchemy
cnx=sqlalchemy.create_engine("mssql+pyodbc://Omnius:[email protected]:1433/Basis?driver=/opt/microsoft/sqlncli/lib64/libsqlncli-11.0.so.1790.0")
Я попытался использовать различные функции строкового формата, которые будут использоваться в sql-запросе. Ниже один из них
xx = ', '.join(x)
sql = "select * from Pretty_Txns where Send_Customer in (%s)" % xx
df = pd.read_sql(sql,cnx)
Все они, кажется, чтобы преобразовать его в цифровой формат
(1000000000164774783, 1000000000253252111) instead of ('1000000000164774783','1000000000253252111')
И, следовательно, запрос терпит неудачу, как тип данных Send_Customer является VARCHAR (50) в SQL
ProgrammingError: (pyodbc.ProgrammingError) ('42000', '[42000] [Microsoft][SQL Server Native Client 11.0]
[SQL Server]Error converting data type varchar to numeric. (8114) (SQLExecDirectW)')
[SQL: 'select * from Pretty_Txns where Send_Customer in (1000000000164774783, 1000000000253252111)']
Страшная мысль. Это склонно к SQL-инъекции, и 'str' не обязательно избегает значений так, как ожидает SQL (например, объект' unicode' в Python 2 будет выводить 'u'whatever''). – univerio