使用 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
我有一个数据库,其中有些记录的日期字段为“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