【问题标题】:executing a sql query using python使用python执行sql查询
【发布时间】:2023-02-05 05:42:50
【问题描述】:

我正在尝试创建一个小型 python 应用程序来从特定的数据库表中提取数据。 提取的行必须在用户指定的 CREATION_DATETIME 之间。

继承人的代码:

startdate = input("Prosze podac poczatek przedzialu czasowego (format RRRR-MM-DD GG:MM:SS): ")
enddate = input("Prosze podac koniec przedzialu czasowego (format RRRR-MM-DD GG:MM:SS): ")
    
query = "SELECT * FROM BRDB.RFX_IKW_MODIFY_EXEC_ORDER_CANCEL_LOG WHERE CREATION_DATETIME between '%s' and '%s' ORDER BY CREATION_DATETIME DESC;"
    
tuple1 = (startdate, enddate)
cursor.execute(*query, (tuple1,))
records = cursor.fetchall()
print("Total number of rows in table: ", cursor.rowcount)
print(records)

我不是很多开发人员,我陷入错误“TypeError:CMySQLCursorPrepared.execute() 需要 2 到 4 个位置参数,但给出了 104 个”,这取决于我尝试修改代码的方式。

你们能帮我正确指定查询吗? 先感谢您。

尝试了各种关于参数化查询的教程,但没有成功。

【问题讨论】:

  • 试试cursor.execute(query, tuple1)
  • 您不应该在引号中包含 %s 占位符,这会阻止它们被参数替换。

标签: python mysql select


【解决方案1】:

您正在为 query 加注星标,使其成为构成字符串的字符的可迭代对象,这可能不是您的意思(即,您应该删除 * 运算符)。此外,tuple1 已经是一个元组,您不应该将它包含在另一个元组中:

cursor.execute(query, tuple1)
# Remove the *-^
# Use tuple1 directly-^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-13
    • 2014-08-15
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    相关资源
    最近更新 更多