Python使用where子句

时间:2018-01-30 11:04:45

标签: python sql database date pyodbc

我是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)

如何将其纳入上述查询? 此外,如果你能指出一些文件,其中可能会提到其他相关的事情,那将是非常有帮助的。

2 个答案:

答案 0 :(得分:2)

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()

答案 1 :(得分:0)

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

这可以解决您的错误:

  

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

def insertIfNotExists(...): DBIO[Seq[StateTable]] = {
  val interaction: Seq[DBIO[Seq[StateTable]]] = ...
  val startingPoint: Seq[StateTable] = Seq.empty
  DBIO.fold(interaction, startingPoint) {
    (total, list) => total ++ list
  }
}