【问题标题】:Python Querying on database with where clausePython 使用 where 子句查询数据库
【发布时间】:2018-01-30 11:04:44
【问题描述】:

我是 Python 新手,想了解连接 MS sql 数据库的语法。 已成功创建连接但要选择条件数据。 请建议如何在 python 中完成以下操作:

import pyodbc as odbc
cursor.execute("SELECT Col1,Col2 FROM Data where date between sysdate and (sysdate-1) ;")

我已经将开始和结束指定为:

End = dt.datetime.today()
Start = End - dt.timedelta(days=1)

如何将其合并到上面的查询中? 此外,如果您可以向我指出一些可能会提到其他此类相关内容的文档,那将非常有帮助。

【问题讨论】:

    标签: python sql database date pyodbc


    【解决方案1】:

    如pyodbc documentation for .execute 中所述,您可以使用? 作为SQL 命令文本中的参数占位符,并将参数值传递给.execute,如下所示:

    End = dt.datetime.today()
    Start = End - dt.timedelta(days=1)
    sql = "SELECT [Col1],[Col2] FROM [Data] WHERE [date] BETWEEN ? AND ?"
    cursor.execute(sql, Start, End)
    rows = cursor.fetchall()
    

    【讨论】:

    • 该语句是否也按以下方式工作: cursor.execute("SELECT [Col1],[Col2] FROM [Data] WHERE [date] >= ? AND [date]
    • 执行数据时出现错误:Error: ('HYC00', '[HYC00] [Microsoft][ODBC SQL Server Driver]Optional feature not implemented (0) (SQLBindParameter)')
    【解决方案2】:

    我相信 Gord 的答案是正确的,但如果这很有用,您还可以在 Python 代码中动态准备 SQL 语句,并将已使用光标参数更新的 SQL 语句提供给您。

    这应该可以解决您的错误:

    错误: ('HYC00', '[HYC00] [Microsoft][ODBC SQL Server Driver]可选 功能未实现 (0) (SQLBindParameter)')

    end = dt.datetime.today()
    start = End - dt.timedelta(days=1)
    sql = "SELECT [Col1],[Col2] FROM [Data] WHERE [date] BETWEEN '{}' AND '{}'".format(start, end)
    cursor.execute(sql)
    rows = cursor.fetchall()
    

    【讨论】:

      猜你喜欢
      • 2014-01-01
      • 1970-01-01
      • 2020-01-28
      • 2014-06-01
      • 1970-01-01
      • 2018-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多