私はPythonをMySQLで使用して学習しています。同じクエリは、MysqlとPyMySQLの動作が異なります。たとえば、MySQLコンソールでは、「ページ」という名前のテーブルがあります。PyMySQLを使用しているときに無効な構文
INSERT INTO pages (title,content) VALUES ("test title","test content")
これは機能します。 PythonではPyMySQLをインポートし、接続を作成してcursor = "cur"
と入力します。実行すると:
cur.execute("INSERT INTO pages (title,content) VALUES ("test title","test content")")
..エラーが発生します。構文が無効です。しかし、私がプレースホルダでこれを試してみると:
cur.execute("insert into pages (title,content) values (%s,%s)",("test title","test content"))
それが動作します!だから私はMySQLで同じクエリがPythonで動作するのをなぜ混同していましたか?それはPyMySQLを使用するときに必ずプレースホルダを使用するべきですか?あなたが全く出データベースドライバのフィギュアをさせるプレースホルダの前後に引用符を置く必要がないので
おかげで、すべての
はいあなたはパラメータ化クエリを使用する必要があります。しかし、動作しない文を見た場合、二重引用符をどのように使用しているか考えてみてください。あなたは基本的にあなたの文字列を閉じています - 代わりに単一引用符を使用してください。 – sgeddes
ええ、そんなルーキーミスがあります –