0

このサイトや他の多くのサイトで高低を検索し、同様の質問を見つけましたが、答えはどれもうまくいきませんでした(通常はタプルを説明するだけです)。HTMLページを解析してデータベースにデータを入力するためのpythonスクリプトを書いています。移入部分を除いて、ほとんどすべてが機能しています...

これは、mySQL データベースを扱うコード セグメントです (注: Python で MySQLdb モジュールを使用)。

conn = MySQLdb.connect(user="root", passwd="xxxxx",db="nutrients")
cur = conn.cursor()
test = "Canned Corn"
cur.execute("INSERT INTO food (name) VALUES (%s)", (test,))
conn.commit()

最初に解析された文字列でテストしていましたが、うまくいきませんでした。これにより、2つのエラーが発生します。

  1. トレースバック (最後の最後の呼び出し): File "C:\Python32\lib\site-packages\MySQLdb\cursors.py", line 171, in execute r = self._query(query) File "C:\Python32\lib\ site-packages\MySQLdb\cursors.py"、330 行目、_query rowcount = self._do_query(q) ファイル "C:\Python32\lib\site-packages\MySQLdb\cursors.py"、294 行目、_do_query db .query(q) _mysql_exceptions.ProgrammingError: (1064、"SQL 構文にエラーがあります。1 行目の '%s)' 付近で使用する正しい s 構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください")

  2. トレースバック (最後の最後の呼び出し): File "C:\Python32\lib\site-packages\MySQLdb\cursors.py", line 171, in execute r = self._query(query) File "C:\Python32\lib\ site-packages\MySQLdb\cursors.py"、330 行目、_query rowcount = self._do_query(q) ファイル "C:\Python32\lib\site-packages\MySQLdb\cursors.py"、294 行目、_do_query db .query(q) _mysql_exceptions.ProgrammingError: (1064、"SQL 構文にエラーがあります。1 行目の '%s)' 付近で使用する正しい s 構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください")

このクエリが機能しないのはなぜですか!?


更新:私の髪をほとんど引き抜いた後、私は2.7.3に戻って何を推測することにしました...すべてが動作するようになりました:Dそれはそのタイプのエラーだったことを知っているべきでした...助けてくれてありがとう!

4

3 に答える 3

2

私もこれに出くわしました。いろいろ調べた結果、これが機能することがわかりました (値の変更に注意してください)。

conn = MySQLdb.connect(user="root", passwd="xxxxx",db="nutrients")
cur = conn.cursor()
test = "Canned Corn"
cur.execute("INSERT INTO food (name) VALUES ({0})", (test,))
conn.commit()

背景情報:非公式の Python パッケージサイトに投稿された MySQLdb から Python 3 への移植では、cursors.py の実行関数が % 演算子ではなく format() を使用するように変更されました。したがって、%s が置換されずに SQL ステートメントに残る理由です。これらの変更は公式ソースにアップストリームされていないようです。

于 2012-06-25T18:29:04.653 に答える
1

トリッキーなSQLや高度なSQLは必要ないと思います。いくつかのものを保存して取得する必要があります。ですから、ORMはあなたの生活をずっと楽にしてくれるかもしれないと思います。

秋のORMを試してみることをお勧めします。

http://pypi.python.org/pypi/autumn/0.5.1

これは小さくてシンプルなORMであり、理解しやすく、操作も簡単です。

Python用のもう1つの優れた人気のあるORMはSQLAlchemyです。

http://www.sqlalchemy.org/

于 2012-06-04T19:59:23.823 に答える
-3

次のようにコードを書く必要があります。

 conn = MySQLdb.connect(user="root", passwd="xxxxx",db="nutrients")
 cur = conn.cursor()
 test = "Canned Corn"
 cur.execute("INSERT INTO food (name) VALUES (%s)" % (test,) )
 conn.commit()

Python を初めて使用し、ある程度のプログラミング経験がある場合は、Dive Into Python book に従ってください。それは無料です。

于 2012-06-04T21:35:29.133 に答える