Pymysql Insert Into not working

55,465

Solution 1

Did you commit it? conn.commit()

Solution 2

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

Solution 3

You can either do

  • conn.commit() before calling close

or

  • enable autocommit via 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

Share:
55,465
Michael T
Author by

Michael T

I am a Project Manager at a major financial institution, working with IT and business partners to install various applications and processes. I have 14 years of experience with VBA and Access, about 5 years with SQL, Visual Basic, and SQL Server. I have some knowledge of other languages/tools such as Java, MySQL, PHP, and Python. It has been said that "a little knowledge can be a dangerous thing" and I am proof of that.

Updated on July 05, 2022

Comments

  • Michael T
    Michael T almost 2 years

    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.