PyMysql-Python: как связать два ввода с SQL-запросом? - PullRequest
0 голосов
/ 30 мая 2018

Допустим, для моего вопроса у нас есть эта таблица:

Actor1 Actor2 Movies
stef   bill   a
bill   stef   b
nick   nick   c
stef   stef   d
nick   bill   e
bill   nick   f

, и мы хотим найти актеров, которые сыграли фильм, и я даю имена актеров с клавиатуры (input1, input2).Очевидно, что если бы вход был один актер, у нас было бы что-то вроде этого:

sql_query='select Actor1,Actor2 from movies where Actor1= {}'.format(input1)
cursor.execute(sql_query)

Но когда у меня есть два входа, что мне делать?

1 Ответ

0 голосов
/ 30 мая 2018

Используйте два заполнителя в запросе.Вы также должны позволить 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))
...