wis*_*dom 0 python mysql database
我仍在学习 Python 作为出色的简单编程语言,问题出在 DataBase 上,我使用 MySQL 来构建它,然后我想从 Python 代码中选择一些元组,因为我确实编写了如下查询:
Q = "INSERT INTO contacts (FirstName,LastName,phone,mobile,email,address) VALUES('%s','%s','%s','%s','%s','%s') "% \
(FN,LN,phone,Mobile,email,address)
Run Code Online (Sandbox Code Playgroud)
因为使用变量,所以没关系。
但是如果我想在查询中使用 (LIKE'') 语句,我会遇到引号麻烦!如下:
Q = "SELECT LastName FROM contacts WHERE phone LIKE '_'%s'%'" %\
(phone)
Run Code Online (Sandbox Code Playgroud)
我能做些什么来解决这个问题,有什么提示吗?
使用准备好的语句,避免字符串格式化的麻烦:
pattern = "_" + phone + "%"
cursor.execute("SELECT LastName FROM contacts WHERE phone LIKE %s", (pattern,))
Run Code Online (Sandbox Code Playgroud)
如果您不想使用准备好的语句,或者在其他情况下偶然发现此问题,请切换到使用str.format(但在执行此操作之前请阅读有关SQL 注入的信息):
Q = "SELECT LastName FROM contacts WHERE phone LIKE '_{0}%'".format(phone)
Run Code Online (Sandbox Code Playgroud)
或者将两者结合起来:
pattern = "_{0}%".format(phone)
cursor.execute("SELECT LastName FROM contacts WHERE phone LIKE %s", (pattern,))
Run Code Online (Sandbox Code Playgroud)