python3.5的pymysql执行sql提示成功,实际并未成功
PHP中文网
PHP中文网 2017-04-17 17:44:31
0
1
1046

使用python3.5执行sql语句(update)完成后,返回正确的影响行数
然后在使用pymysql获取刚刚update的数据,返回的数据也是修改过的

但是
我又使用sqlyog去看刚才修改的记录
发现根本没变

具体如下:
mysql类:

class MysqlClass:

    def __init__(self, host, user, passwd, dbName, port=3306):
        
        self.conn = pymysql.connect(
        host=host, 
        port=port, 
        user=user, 
        passwd=passwd, 
        db=dbName, 
        charset='latin1',
        cursorclass=pymysql.cursors.DictCursor
        )
        
        self.cur = self.conn.cursor()
    
    # 执行sql,并返回句柄
    def query(self, sql):
        return self.cur.execute(sql)
    
    # 执行sql后返回关联数组
    def getAll(self,sql):
        self.query(sql)
        return self.cur.fetchall()

然后我实例化mysql类并执行update语句:

mysql = MysqlClass('121.*.*.*','root','m*.*m','Stest')
print(mysql.query("update qpkwinfos set page=0,rank=0 where id = 10003"))

一共影响了1行

然后我使用sqlyog查看刚刚update的记录,发现page和rank字段的值没有变化

研究了一个早上了,也没发现是什么问题
在网上搜索也没发现,但是我用PHP又可以正常的修改字段

本机配置:
win10企业版
python3.5
mysql5.5

备注:
mysql配置信息都是填写正确的
不会存在修改为另外的一个数据库

PHP中文网
PHP中文网

认证0级讲师

모든 응답(1)
刘奇

pymysql이 데이터베이스에 연결되면 기본값이 False인 자동 커밋 매개변수가 있는데, 이는 SQL 문을 실행한 후 실제 데이터베이스에 자동으로 제출할지 여부를 나타냅니다. True로 설정되지 않은 경우 제출해야 합니다. SQL 문, 즉 conn.commit()

을 실행한 후 명시적으로 수행합니다.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿