2017-12-09 19 views
1

py3では、MySQLに接続するためにpymysqlモジュールを使用します。pymysql return error SQL構文

私はMySQLiをコンストラクタで実行し、このような関数をデータベースに()クラスを記述します。

def add_user_to_database(self, id, first_name, last_name, username, lang_code): 
    with self.MySQLi.cursor() as cursor: 
     cursor.execute('INSERT INTO users (id, first_name, last_name, username, language_code) VALUES ({0}, {1}, {2}, {3}, {4})'.format(id, first_name, last_name, username, lang_code)) 
    connection.commit() 

私はそれdatabase.phpでPYを実行した後に、このエラーが表示さ:(:

raise errorclass(errno, errval) 
pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' sepwhrr, en)' at line 1") 
+0

文字列補間を使用してSQLを構築しないでください。 –

+0

だから何を使う? @DanielRoseman –

答えて

1

ます文字列補間を使用してクエリを作成すると、エスケープ/クオート問題を得ることができますが、パラメータ化クエリを使用するのは簡単です。

sql = "INSERT INTO `users` (`id`, `first_name`) VALUES (%s, %s)" 
cursor.execute(sql, (id, first_name)