Reputation: 1955
I'm running this from PyDev in Eclipse...
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"
The result is, at the top of the Console it says C:...test.py, and in the Console:
writing to db wrote to db
So it's not terminating until after the execute command. But when I look in the table in MySQL it's empty. A record did not get inserted.
First off, why isn't it writing the record. Second, how can I see a log or error to see what happened. Usually there should be some kind of error in red if the code fails.
Upvotes: 70
Views: 61833
Reputation: 17587
PyMySQL disable autocommit
by default, you can add autocommit=True
to connect()
:
conn = pymysql.connect(
host='localhost',
user='user',
passwd='passwd',
db='db',
autocommit=True
)
or call conn.commit()
after insert
Upvotes: 126
Reputation: 818
You can either do
conn.commit()
before calling close
or
conn.autocommit(True)
right after creating the connection object.Both ways have been suggested from various people at a duplication of the question that can be found here: Database does not update automatically with MySQL and Python
Upvotes: 4