使用 python 将变量传递到 MySQL 查询

Passing variables into a MySQL query using python

我有一个数据库,其中有些记录的日期字段为“05221999”。我正在尝试根据月份和年份从用户的输入中执行 SQL 查询。在这种情况下,我对 05 月份和 1999 年的所有记录感兴趣。

不幸的是,我无法正确使用 Python/SQL 语法。到目前为止,这是我的代码:

    def submitact(self):
        date = self.md.get()
        month = date[0:2]
        year = date[2:7]

        db = pymysql.connect("localhost", "username", "password", "database")
        cursor = db.cursor()
        cursor.execute("SELECT * FROM `table` WHERE `Code` = 'RM' AND `Date` LIKE %s'_'%s", (month, year))

        results = cursor.fetchall()
        print(results)

        cursor.close()
        db.close()

我对 SELECT 语句做了几个变体,它们要么 return 错误,要么什么都没有。

谢谢!

在下面的代码片段中,我使用了 f-string 样式来格式化查询字符串

[...]
query = f"SELECT * FROM `table` WHERE `Code` = 'RM' AND LEFT(`Date`, 2) = '{month}' AND RIGHT(`Date`, 4) = '{year}'"
cursor.execute(query)
[...]

试试这个:

query = "SELECT * 'table' WHERE 'Code' = 'RM' AND 'Date' LIKE '%{0}_{1}'".format(month, year)
cursor.execute(query)

这样,'query'变量值将是:

"SELECT * FROM 'table' WHERE 'Code' = 'RM' AND 'Date' LIKE '%05_1999'"

有关字符串格式的更多信息,让我们看看Python String Formatting Best Practices - Real Python