【问题标题】:Read from SQL Server with Python using few parameters from DataFrame使用 DataFrame 中的少量参数使用 Python 从 SQL Server 读取
【发布时间】:2020-11-02 09:43:05
【问题描述】:

我需要使用这个参数从 SQl Server 数据库中读取:

  • 上传数据帧的时间段(订单日期和次月日期)
  • 来自同一 Dataframe 的客户端 ID

所以我有这样的事情:

sql_sales = """
SELECT 
    dt,
    clientID, 
    cost
WHERE 
    dt between %(date1)s AND %(date2)s
    AND kod in %(client)s
""" 

我有 df 列:

  1. 客户 ID
  2. 订购日期
  3. 月后日期

我可以使用客户端列表,但代码应该使用一些参数列表解析数据库(其中两个是周期的一部分)。

sales = sales.append(pd.read_sql(sql_sales, conn, params={'client':df['clientsID].tolist()}))

【问题讨论】:

    标签: python sql sql-server pandas sqlite


    【解决方案1】:

    我以前得到类似工作的方法是先做in {},然后使用.format,并按顺序列出参数。此外,您不需要使用 params 参数。最后,如果您将IN 与SQL 一起使用,那么在Python 中您需要从客户端列表中创建一个tuple。对于dt between {} AND {}这一行,你也可以使用dt between ? AND ?。

    client = tuple(df['clientsID'].tolist())
    
    sql_sales = """
    SELECT 
    dt,
    clientID, 
    cost
    WHERE 
    dt between {} AND {}
    AND kod in {}
    """.format(date1,date2,client)
    
    sales = sales.append(pd.read_sql(sql_sales, conn))
    

    【讨论】:

    • 非常感谢,我有一个关于 date1,date2 的问题,我是否应该将其添加到列表中,例如 client 和 tuple?
    • @Valeria ,你不应该这样做。
    猜你喜欢
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    相关资源
    最近更新 更多