PyMysql-Python:如何将两个输入与 sql 查询相关联?
PyMysql-Python:How to relate two inputs with a sql query?
假设我的问题是 table:
Actor1 Actor2 Movies
stef bill a
bill stef b
nick nick c
stef stef d
nick bill e
bill nick f
我们想找到演过电影的演员,我从键盘输入演员的名字(输入 1、输入 2)。
显然,如果输入是一个演员,我们会得到这样的结果:
sql_query='select Actor1,Actor2 from movies where Actor1= {}'.format(input1)
cursor.execute(sql_query)
但是当我有两个输入时我该怎么办?
在查询中使用两个占位符。您还应该让 cursor.execute()
执行占位符替换,因为它使用准备好的语句,而不是字符串格式,它对 SQL 注入开放(您还忘记了 {}
周围的引号,所以你会得到一个错误)。
sql_query = 'select Actor1,Actor2 from movies where (Actor1= %s AND Actor2 = %s) OR (Actor1 = %s AND Actor2 = %s)'
cursor.execute(sql_query, (input1, input2, input2, input1))
假设我的问题是 table:
Actor1 Actor2 Movies
stef bill a
bill stef b
nick nick c
stef stef d
nick bill e
bill nick f
我们想找到演过电影的演员,我从键盘输入演员的名字(输入 1、输入 2)。 显然,如果输入是一个演员,我们会得到这样的结果:
sql_query='select Actor1,Actor2 from movies where Actor1= {}'.format(input1)
cursor.execute(sql_query)
但是当我有两个输入时我该怎么办?
在查询中使用两个占位符。您还应该让 cursor.execute()
执行占位符替换,因为它使用准备好的语句,而不是字符串格式,它对 SQL 注入开放(您还忘记了 {}
周围的引号,所以你会得到一个错误)。
sql_query = 'select Actor1,Actor2 from movies where (Actor1= %s AND Actor2 = %s) OR (Actor1 = %s AND Actor2 = %s)'
cursor.execute(sql_query, (input1, input2, input2, input1))