2017-05-26 2 views
0

私のスクリプトを通してクエリを渡そうとしていますが、SQLエラーが発生します。 Heidisqlで同じsql文を実行すると正常に動作します。Pythonのmysqldb.queryでSQL文が失敗する

私の質問は - 私は間違っていますか? Pythonの3.4

モジュール:のMySQLdb

DB:データベースがデータベース

F="Gunnar Gabrielsen" 
Database.query('INSERT INTO documents (name) values (' + F + ');') 
i=Database.query('SELECT * from documents;') 
print(i) 

Pythonバージョンへの正しい接続である

エラーメッセージ

_mysql.connection.query(self, query) _mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Gabrielsen)' at line 1")

PythonスクリプトMariaDB

答えて

1

あなたは値の周りに引用符を入れていません。

しかし、とにかくこのようにするべきではありません。引用符の問題以外にも、SQLインジェクション攻撃を開始しています。

ではなくparametrisedクエリを使用してください:あなたは、この生成した

cursor.execute('INSERT INTO documents (name) values (%s)', (F,)) 
+0

洞察力sqlinjectionを与えてくれてありがとう、%sを見ましたが、私はそれの適用を理解していません – user209305

0

:あなたが必要なもの

INSERT INTO documents (name) values (Gunnar Gabrielsen); 

INSERT INTO documents (name) values ("Gunnar Gabrielsen"); 

しかし、エスケープまたはパラメータ化せずに、あなたが開いているですあなたのコード(とシステム)まで "SQLインジェクション"と他のハッキング。

関連する問題