【问题标题】:Pyodbc with my MSSQL from todays date从今天开始使用我的 MSSQL 进行 Pyodbc
【发布时间】:2016-04-26 11:05:14
【问题描述】:

我需要帮助。我正在使用 pyodbc 并已与服务器和我的桌子取得联系。但我想从今天开始获得新的更新。 我用过cursor.execute("SELECT * FROM Disk")

但是这样我得到了 6000 行。从日期 26.February 到今天。 我怎样才能从今天的日期或提前一周获得?

示例 cursor.execute("SELECT * FROM Disk WHERE dt > todays_date")

提前致谢

【问题讨论】:

  • 您能否提供有关表架构的更多信息?
  • 完成 =) 我认为,我对这个编程世界很陌生

标签: python python-3.x pyqt5


【解决方案1】:

你可以使用mysql的日期和时间函数。 例如查看今天的条目: cursor.execute("SELECT * FROM Disk WHERE dt > CURRENT_DATE")

更多信息: https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

【讨论】:

  • 感谢 Gautam840,但不幸的是它没有用。我收到错误消息: Traceback(最近一次调用最后一次):文件“C:\Users\alex\Desktop\Programmering\Blattdata\sql.py”,第 8 行,在 cursor.execute("SELECT * FROM Disk WHERE dt > CURRENT_DATE") pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]关键字'CURRENT_DATE'附近的语法不正确。(156) (SQLExecDirectW)")
【解决方案2】:
import sys
import pyodbc
from datetime import datetime

cnxn = pyodbc.connect(r'DRIVER={SQL Server};SERVER=192.168.205.14\WHATSUP;DATABASE=Monitor;UID=username;PWD=password')
cursor = cnxn.cursor()

for row in cursor.fetchall():
    print (row)

然后它按此顺序从 MSSQL 服务器返回数据

Custid、服务器名、驱动器、dt、size_mb、free_mb、last_reboot、last_update、wblastSuccesfull、wblastbackup、TempID

('BIOBE', 'SBS', 'C:', '26.02.2016', '279', '151', '36', '38', '25.02.2016', '25.02.2016' , 453)

但是由于有很多数据 TempID 从 456 到 6023 并且可以追溯到 2 月,我想从今天的日期和/或 1 周开始获取。这可能吗?

【讨论】:

    【解决方案3】:

    好吧,我一直在尝试不同的事情,因为自从我住在挪威以来,我们有不同的日期格式......我们有 dd.mm.yyy eksample: 24.12.2016

    import pyodbc
    import datetime
    
    format = "%d.%m.%Y"
    today = datetime.datetime.today()
    s = today.strftime(format)
    d = datetime.datetime.strptime(s, format)
    print (d.strftime(format))
    
    c = pyodbc.connect(r'DRIVER={SQL Server};SERVER=192.168.205.14\WHATSUP;DATABASE=Monitor;UID=sa;PWD=WhatsUp_Gold')
    cursor = c.cursor()
    cursor.execute("SELECT * FROM Disk WHERE dt = '27.04.2016'")
    
    for row in cursor.fetchall():
        print (row)
    

    然后我得到输出:

    27.04.2016

    ('Aconte', 'Srv1', 'C:', '27.04.2016', '466', '302', '6', '6', '', '', 6699)

    现在我该如何更改这个 ["SELECT * FROM Disk WHERE dt = '27.04.2016'" 像这样 "SELECT * FROM Disk WHERE dt = 'CURRENT_DATE'"?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-03
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多