Python 使用多个参数读取SQL,包括列表
我在stackoverflow上发现了许多类似的问题,但没有一个解决方案适合我。我试着用不同的方式去做,但是,很明显,“魔鬼在细节中”,我没有考虑到一些事情 鉴于: 以开始和结束日期[yyyyymmdd,yyyyymmdd]格式列出的值(x,x1,x3…xn)和日期-这些是我的SQL查询中的参数,我想用python读取它们 首先,我为列表定义占位符,以便在查询中使用:Python 使用多个参数读取SQL,包括列表,python,pandas,Python,Pandas,我在stackoverflow上发现了许多类似的问题,但没有一个解决方案适合我。我试着用不同的方式去做,但是,很明显,“魔鬼在细节中”,我没有考虑到一些事情 鉴于: 以开始和结束日期[yyyyymmdd,yyyyymmdd]格式列出的值(x,x1,x3…xn)和日期-这些是我的SQL查询中的参数,我想用python读取它们 首先,我为列表定义占位符,以便在查询中使用: placeholders = ', '.join('?' * len(my_list)) 然后,我定义查询并读取它以将结果保存
placeholders = ', '.join('?' * len(my_list))
然后,我定义查询并读取它以将结果保存在dataframe中:
import pandas as pd
import pyodbc
query="""SELECT * FROM "my_table"
WHERE
ID in ({})
and date between ? and ?
""".format(placeholders)
df = pd.read_sql_query(query, conn, params=(*my_list, date))
这将返回错误,说明(my_列表包含360个成员):
“SQL包含362个参数标记,但提供了361个参数”,“HY000”)
似乎查询并没有像我所希望的那样读取参数。但我不知道这有什么问题。
有人能帮忙吗
- 我已经用另一种方式试过了。如果我将参数“date”放在第一位,错误是:SQL包含362个参数标记,但提供了2个参数(“HY000”)
如何在查询中显示参数才能正确读取?为什么不打印SQL查询并直接运行它呢?看起来您的查询有两个日期参数,介于两者之间,在我的列表中有360个参数。您需要传递开始日期和结束日期。@anon01,您的意思是:df=pd.read_sql_query(““从my_表”中选择*,其中ID在({})中,日期在?和?之间?”。@format(占位符),conn,params=(*my_列表,日期))@Col Bates-collynomial,是右侧-查询有362个参数:360-in列表和2-date,起始日期和结束日期如下:[yyyyymmdd,yyyyymmdd]。我没有在这里的代码中显示它,但我定义了它