web-dev-qa-db-ja.com

Pymysql Insert Intoが機能しない

これをEclipseのPyDevから実行しています...

import pymysql
conn = pymysql.connect(Host='localhost', port=3306, user='userid', passwd='password', db='fan')
cur = conn.cursor()
print "writing to db"
cur.execute("INSERT INTO cbs_transactions(leagueID) VALUES ('test val')")
print "wrote to db"

結果は、コンソールの上部にC:... test.pyと表示され、コンソールに次のように表示されます。

dbへの書き込みdbへの書き込み

そのため、executeコマンドの後まで終了しません。しかし、MySQLのテーブルを見ると空です。レコードは挿入されませんでした。

まず、なぜレコードを書いていないのですか。第二に、何が起こったのかを見るために、どのようにログまたはエラーを見ることができますか。通常、コードが失敗した場合、赤で何らかのエラーが発生するはずです。

49
Michael T

コミットしましたか? conn.commit()

106
qmorgan

PyMySQLはデフォルトでautocommitを無効にし、connect()に_autocommit=True_を追加できます:

_conn = pymysql.connect(
    Host='localhost',
    user='user',
    passwd='passwd',
    db='db',
    autocommit=True
)
_

または、挿入後にconn.commit()を呼び出します

98
Steely Wing

どちらでもできます

  • conn.commit()closeを呼び出す前に

または

  • 接続オブジェクトを作成した直後にconn.autocommit(True)を介して自動コミットを有効にします。

ここにある質問の重複で、さまざまな人々から両方の方法が提案されています: データベースはMySQLおよびPythonで自動的に更新されません

2
Simeon