4

私は 9 列のテーブルを持っています。最初の 3 つはすべてテキストで、最後の 6 つは INT として設定されています。

テキストフィールドに挿入すると、すべてが期待どおりに機能します

conn = pymysql.connect(host='', port=, user='', passwd='', db='')
cur = conn.cursor()
cur.execute("INSERT INTO table(Name) VALUES ('Sample Name')")

このコードは正常に実行され、名前をデータベースに挿入できます。ただし、整数の挿入ステートメントを実行すると、あらゆる種類の問題が発生します。

私は次のすべてを試しました:

cur.execute("INSERT INTO table(Left Avg) VALUES (5)")
cur.execute("INSERT INTO table(Left Avg) VALUES (%s)", (5))
cur.execute("INSERT INTO table(Left Avg) VALUES (%s)" % (5))
cur.execute("""INSERT INTO mlb_data(Left Avg) VALUES (%s)""" % (5))

基本的に、整数をテーブルに挿入するときに何を試しても、次のエラーが発生します。

Traceback (most recent call last):
File "testing.py", line 12, in <module>
cur.execute("""INSERT INTO mlb_data(Left Avg) VALUES (%s)""" % (5))
File "build/bdist.macosx-10.7-intel/egg/pymysql/cursors.py", line 117, in execute
File "build/bdist.macosx-10.7-intel/egg/pymysql/connections.py", line 189, in     defaulterrorhandler
pymysql.err.ProgrammingError: (1064, u"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 'Left   Avg) VALUES (5)' at line 1")

MySQl タブレットを INT ではなく VarChar に変更しようとしましたが、数値を挿入しようとするとエラーが発生します。

ここで何が欠けていますか?

編集:これを試したことがないのか、フォーマットが間違っていたのかはわかりませんが、わかりました。

num = 5.23947824987
cur.execute("INSERT INTO mlb_data(LeftAvg) VALUES (%s)", (num,))

問題なく動作します。これは正しいですか、それとも私はとても幸運だったのですか?

4

3 に答える 3

1

どうですか

cur.execute("INSERT INTO table(`Left Avg`) VALUES (?)", (5,))

'Left Avg' が列名であると仮定すると、原則として列名にスペースを入れないようにする必要があります。

于 2013-04-24T19:41:31.407 に答える
-3

Python でINSERTを行う簡単な方法は、連結文字列を使用することです。このようなもの:

id_user = 1
username = "Tudor"
address = "Cluj-Napoca"
sql = "INSERT INTO user(id_user,username,address) VALUES (" + id_user + ",'" + username + "','" + address + "');"
cursor.execute(sql)

ただし、" 記号と ' 記号には十分注意してください。クエリを実行する前に印刷することを強くお勧めします。

于 2016-04-26T20:14:05.400 に答える