【问题标题】:Import data from SQL Server into pandas dataframe using a list to filter desired values使用列表将数据从 SQL Server 导入 pandas 数据框以过滤所需的值
【发布时间】:2021-12-01 17:46:08
【问题描述】:

我正在尝试使用从以前的 pandas 数据帧生成的值列表将某些数据从 SQL 服务器导入到新的 pandas 数据帧。在我最初的尝试之后,我能得到的最好的输出是一个空的数据框。任何帮助是极大的赞赏!我的代码如下:

    test_list = previous_df["StaffName"].tolist()

    cnxn_str = ("Driver={XXXXXXXX};"\
                "Server=XXXXXXXXXXXX;"\
               "Database=XXXXXXXXX;"\
        "UID=XXXXXXXXXX;"\
        "PWD=XXXXXXXXXX;")
   cnxn = pyodbc.connect(XXXXX)
    new_df = pd.read_sql("SELECT * \
                  FROM XXXXXXXXXXXXXX\
                  WHERE (Variable_1 in ('X1','X2','X3', 'X4') AND \
                          Varible_2= 'XXXXXXX' AND\
                          Staff_Name_in_new_df_variable in ('test_list'))",
                  cnxn)

【问题讨论】:

  • @GoldenLion 感谢您的帮助,但它似乎对我不起作用......我得到的只是“无效语法”错误:/

标签: python sql-server pandas


【解决方案1】:

使用字符串格式注入由员工姓名列表组成的sql_string

previous_df=pd.DataFrame({'StaffName':['Bob','Jim','Don']})
test_list = previous_df["StaffName"].tolist()

sql_string = "("
for i in test_list:
    sql_string = sql_string + "'" + i + "',"
sql_string = sql_string[:-1] + ")"

sql="select * from table where field in{test_list}".format(test_list=sql_string)
print(sql)

输出

select * from table where field in('Bob','Jim','Don')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 2013-07-02
    • 2018-07-07
    • 1970-01-01
    • 2018-03-08
    • 2023-01-17
    • 1970-01-01
    相关资源
    最近更新 更多