【发布时间】:2020-09-09 18:54:44
【问题描述】:
我在使用 WHERE in 子句在 pandas 中运行 SQL 脚本时遇到问题,该子句选择列表或元组的成员
tuple=(1,2,3,4,5,6, 7) # there are 2228 members
date=20200101
sql=pd.read_sql_query("""SELECT *
FROM [MY_TABLE] with (nolock)
WHERE [cod] IN (?)
and bi_partition>=?""", conn, params=[tuple, date])
返回的错误:
('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]The data types varchar and ntext are incompatible in the equal to operator. (402) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared. (8180)')
当使用 params =[str(tuple), str(date)] 时,错误是:
('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]The data types varchar and ntext are incompatible in the equal to operator. (402) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared. (8180)')
我尝试使用在 StackOverflow 上找到的不同解决方案来修复它,但它不起作用。
有人可以帮忙吗?
谢谢
【问题讨论】:
-
你可以试试
params=[str(tuple), str(date)]吗? -
@Aviv Yaniv,我试过但返回不同的错误:('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]数据类型 varchar 和 ntext 不兼容在等于运算符中。(402) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]无法准备语句。(8180)')
-
@Vero 设置您评论的错误。你也可以编辑你的帖子:)
-
where [cod] in ?而不是(?)可能会解决它。 -
不幸的是,没有。它给出了同样的错误