1

私は pymysql と python オペレーターで苦労しています。ただし、python 演算子についてはよくわかりません。

データベースにいくつかの値を挿入したい。コード:

import pymysql
conn = pymysql.connect(host='127.0.0.1', unix_socket='/Applications/MAMP/tmp/mysql/mysql.sock', user='root', passwd='root', db='db2', charset='utf8')
cur = conn.cursor()
v = (123 , 'foobarfoobar', 'foo', 1241, 3, 132 )
cur.execute("INSERT INTO celebs(num_id, Text, Handle, Followers, RT, Timestamp) VALUES (?,?,?,?,?,?)", v)

レコードの mySQL 構造はINT (PRI), INT, TEXT, VARCHAR, INT, INT, VARCHAR.

私はこれを実行し、私は得るTypeError: not all arguments converted during string formatting

それを解決する方法の詳細と、おそらく演算子がPythonでどのように機能するかについての説明。PHPの方が簡単だと思います:$a = 22; echo "$a days";

アップデート:

Insert into を直接使用していますが、まだデータが挿入されません。

cur.execute("INSERT INTO celebs (num_id, Text, Handle, Followers, RT, Timestamp) VALUES (123 , 'foobarfoobar', 'foo', 1241, 3, 132 );"  )
4

3 に答える 3

5

ソースコードによると、paramstyleformatであるため、変更する必要があります...

cur.execute("INSERT INTO ... VALUES (?,?,?,?,?,?)", v)

...に...

cur.execute("INSERT INTO ... VALUES (%s,%s,%s,%s,%s,%s)", v)

InnoDB などのトランザクション ストレージ エンジンを使用している場合はconn.commit()、クエリを実行した後に呼び出して、トランザクションを明示的にコミットする必要がありINSERTます。

于 2013-06-17T15:12:18.947 に答える
0

間違いは v のデータ構造にあると思います。タプルではなくリストにする必要があります

于 2013-06-17T14:17:59.107 に答える