0

我仍在学习 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)

因为使用变量,没关系。
但是如果我想在查询中使用 (LIKE'') 语句,我会遇到引用问题!如下:

    Q = "SELECT LastName FROM contacts WHERE phone LIKE '_'%s'%'" %\
            (phone)

我能做些什么来解决这个问题,有什么提示吗?

4

1 回答 1

5

使用prepared statements,避免字符串格式化的麻烦:

pattern = "_" + phone + "%"
cursor.execute("SELECT LastName FROM contacts WHERE phone LIKE %s", (pattern,))

如果您不想使用准备好的语句,或者在其他情况下偶然发现此问题,请切换到使用str.format(但在执行此操作之前请阅读有关SQL 注入的信息):

Q = "SELECT LastName FROM contacts WHERE phone LIKE '_{0}%'".format(phone)

或者将两者结合起来:

pattern = "_{0}%".format(phone)
cursor.execute("SELECT LastName FROM contacts WHERE phone LIKE %s", (pattern,))
于 2012-06-20T10:27:29.587 回答