Я использую mysqlclient (форк MySQLdb1 для python3) в Python 3.4.3, и согласно тому, что я прочитал онлайн ( Escape-строка Python для MySQL ), должны быть написаны запросы MySQLdb Pythonвот так для правильного экранирования:
query = self.conn.cursor()
query.execute('SELECT 1 FROM servers WHERE ip=%s AND port=%s AND game_id=%s' ,(ip,port,gameid))
К сожалению, когда я это делаю, я получаю следующую ошибку:
неподдерживаемые типы операндов для%: 'bytes' и'tuple' mysqldb
Кажется, это работает, но это может привести к внедрению SQL?
query = self.conn.cursor()
query.execute("SELECT 1 FROM servers WHERE ip='%s' AND port=%s AND game_id='%s'" % (ip,port,gameid))
Итак, как мне безопасно заставить приведенный выше запрос работать, используя предпочтительный синтаксический метод, который избавит меня от всего этого в Python 3.4.3?