【问题标题】:Python module mysql-connector does not see new changesPython 模块 mysql-connector 没有看到新的变化
【发布时间】:2021-04-29 02:27:25
【问题描述】:

我使用mysql.connector 模块在 python 脚本中获取行,但是当我使用终端更新表时,我的脚本没有看到任何变化。

我的代码是这样的:

import mysql.connector

database = mysql.connector.connect(host='localhost', user='root', passwd='password', database='my_db')
cursor = database.cursor()

cursor.execute('SELECT * FROM my_table')
print(cursor.fetchall())

cursor.execute('SELECT * FROM my_table')
print(cursor.fetchall())

第一次它总是读取正确的值,但第二次即使我更新了我的数据库,它也看不到任何变化。

我尝试了这个解决方案,但还是不行:

  • 我尝试使用mysql.connector 模块更新数据库
  • 我尝试安装一些旧版本
  • 我尝试使用 root 用户

【问题讨论】:

    标签: python mysql mariadb mysql-connector


    【解决方案1】:

    当使用执行DML,如update,删除等时您必须在执行操作后提交光标,否则您的操作不会保存。有一段时间提交光标的用例

    • 由于电力问题
    • 原子性事务将在后面回滚或提交

    喜欢

    import mysql.connector
    
    database = mysql.connector.connect(host='localhost', user='root', passwd='password', database='my_db')
    cursor = database.cursor()
    
    try:  
        cursor.execute("update Employee set name = 'alex' where id = 110")  
        cursor.commit()  
    except:  
        cursor.rollback()  
      
    cursor.close()  
    

    如果更新成功则提交,否则如果在数据库级别出现任何错误则回滚

    或者你可以在连接数据库时传递autocommit=True,它也可以工作,它是全局配置,它会提交一些时间间隔 喜欢

    
    database = mysql.connector.connect(host='localhost', user='root', passwd='password', database='my_db', autocommit=True)
    cursor = database.cursor()
    

    【讨论】:

    • 请将答案标记为正确,以便日后为人们所用。
    猜你喜欢
    • 2018-06-16
    • 1970-01-01
    • 2018-03-12
    • 2021-07-04
    • 2021-08-12
    • 1970-01-01
    • 2016-03-14
    • 2021-08-16
    • 2019-01-29
    相关资源
    最近更新 更多