これを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のテーブルを見ると空です。レコードは挿入されませんでした。
まず、なぜレコードを書いていないのですか。第二に、何が起こったのかを見るために、どのようにログまたはエラーを見ることができますか。通常、コードが失敗した場合、赤で何らかのエラーが発生するはずです。
コミットしましたか? conn.commit()
PyMySQLはデフォルトでautocommit
を無効にし、connect()
に_autocommit=True
_を追加できます:
_conn = pymysql.connect(
Host='localhost',
user='user',
passwd='passwd',
db='db',
autocommit=True
)
_
または、挿入後にconn.commit()
を呼び出します
どちらでもできます
conn.commit()
はclose
を呼び出す前にまたは
conn.autocommit(True)
を介して自動コミットを有効にします。ここにある質問の重複で、さまざまな人々から両方の方法が提案されています: データベースはMySQLおよびPythonで自動的に更新されません