Tan Yuanhong
Tan Yuanhong

Reputation: 45

Unable to INSERT with Pymysql (incremental id changes though)

When I'm using pymysql to perform operations on MySQL database, it seems that all the operations are temporary and only visible to the pymysql connection, which means I can only see the changes through cur.execute('select * from qiushi') and once I cur.close() and conn.close() and log back in using pymysql, everything seems unchanged.

However, when I'm looking at the incremental id numbers, it does increased, but I can't see the rows that were inserted from pymysql connection. It seems that they were automatically deleted?!

Some of my code is here:

import pymysql try: conn = pymysql.connect(host='127.0.0.1',port=3306,user='pymysql',passwd='pymysql',charset='utf8') cur = conn.cursor() #cur.execute('CREATE TABLE qiushi (id INT NOT NULL AUTO_INCREMENT, content_id BIGINT(10) NOT NULL, content VARCHAR(1000), created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(id));') #cur.execute('DESCRIBE content') #cur.fetchall() cur.execute('USE qiushibaike') for _ in range(0,len(content_ids)): cur.execute("INSERT INTO qiushi (content,content_id) VALUES (\"%s\",%d)"%(jokes[_],int(content_ids[_]))) finally: cur.close() conn.close()

Upvotes: 0

Views: 401

Answers (1)

Tan Yuanhong
Tan Yuanhong

Reputation: 45

I solved the problem by myself... Because the config is automatically committed, so after each SQL sentence we should commit the changes.

Approach 1: add cur.commit() after the cur.execute()

Approach 2: edit the connection config, add autocommit=True

Upvotes: 1

Related Questions