将列表转换为元组以避免在pythonsql查询中列表中的最大表达式数为1000



我在python中有列表,我已经将此列表转换为oracle sql列表以进行sql查询,但存在错误列表中的最大表达式数为1000,我想将此列表转化为元组,以便解决此错误。这个列表随随机数的变化而变化。

MY代码

# convert column to list
samples_numbers = samples.loc[:, "cut_num"].values.tolist()
# convert python list  to sql list
sqllist = str(samples_numbers)
sqllist = sqllist.replace("[", "(").replace("]", ")")
# statment to make query read from list
statment = "select from sample_table where data in" + sqllist 
result  = pd.read_sql_query(statement, engine)

我希望我的代码而不是从(50050750075008,…,100000(中的数据为的示例表中选择((500,0(,(507,0(、(5007,0(,(5008,0(,…中的数据,。。。。,(100000,0((以避免列表中表达式的最大数量为1000

错误消息sqlalchemy.exc.DatabaseError:(cx_Oracle.DatabaseError(ORA-01795:列表中的最大表达式数为1000

使用此生成list

samples_numbers = samples.loc[:, "cut_num"].values.tolist()

您可以创建空列表的变量sqlite,然后根据条件(504,0),(507,0)....(100000,0)创建该列表的每个值append

sqllist = []
for each in samples_numbers:
sqllist.append((each, 0))

然后,您可以使用以下方法将sqlite类型转换为tuple

sqllist = tuple(sqllist)

输出

print(sqlite)
((500, 0), (507, 0), ..., (100000, 0))

相关内容

  • 没有找到相关文章

最新更新