【问题标题】:How a variable list to filter data using sql python?如何使用 sql python 过滤数据的变量列表?
【发布时间】:2021-02-08 17:17:18
【问题描述】:

我正在尝试使用变量列表 ABC 过滤数据。

这个变量列表有大约 25 000 个元素。

我的第一种方法是使用 for 循环,所以我过滤了列表的每个元素,但它太慢了!

script="""SELECT CODUSU, DOS, TIP, DTD FROM Dose WHERE (CODUSU IN ('"""+abc[i]+"""')) AND (DTD LIKE '%"""+str(anofinal)+"""')   ;"""

现在我认为最好使用类似的东西:

script="""SELECT CODUSU, DOS, TIP, DTD FROM Dose WHERE (CODUSU IN ('06LA006','06LA005')) AND (DTD LIKE '%"""+str(anofinal)+"""')    ;"""

但我没有找到如何在我的脚本中传递列表参数。

到目前为止我所尝试的:

conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\Tecnico\Desktop\Backup\be.mdb;')

cursor = conn.cursor()

abc=['06LA006','06LA005','13JA001']
script="""SELECT CODUSU, DOS, TIP, DTD FROM Dose WHERE (CODUSU IN ("""%abc""")) AND (DTD LIKE '%"""+str(anofinal)+"""') ;"""
df1 = pd.read_sql_query(script, conn)
banco=banco.append(df1)
print(df1)
        
        
banco.to_csv('20'+str(anofinal)+'_d.csv',sep=";", index = False)

有什么建议吗?

【问题讨论】:

    标签: python sql pandas filter


    【解决方案1】:
    abc=['dw','wda','wiug87']
    for ele in abc:
        script="""SELECT CODUSU, DOS, TIP, DTD FROM Dose WHERE (CODUSU LIKE ele) AND 
        (DTD LIKE '%"""+str(anofinal)+"""') ;"""
    

    朋友,我不知道它是否会起作用,但我试过了

    【讨论】:

    • 这是循环解决方案。每 100 个循环大约需要 2 分钟
    猜你喜欢
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    相关资源
    最近更新 更多