Python MySQL 缓存在 Python 端

Python MySQL is cached at Python side

各位,我真的不知道如何解决我的问题,我认为这是关于缓存(内存)错误。 我正在使用 CloudProxy

在本地测试 运行ning python 到 Google ClouSQL - MYSQL 的连接

我遇到一个问题,我的 table 的自动增量 ID 在 python 的本地出现故障,我对此很陌生。

我做的是

  1. 从代码中删除了 connection.commit() 以测试它是否可以在没有 commit() 的情况下插入到 cloudSQL
  2. 运行 python 文件几次,数据显示在本地终端但不在云端数据库
  3. 将 connection.commit() 放回代码中 运行
  4. 自动递增 ID 以某种方式从 python 左侧开始,而不是从 cloudSQL 继续。

两边的userID都是11,我去掉了connection.commit()然后点击了几次运行,它显示了本地的数据库输出和插入,然后我检查了cloudSQL没有收到任何插入,所以我把 connection.commit() 放回代码中。我在玩 .commit()

当我使用 connection.commit() 再次单击 运行 时,输出显示 userID 在本地和 cloudSQL 中从 22 开始,但它应该是 12。

我不知道如何解决这个问题,我尝试重新启动云代理和 python 程序,但没有用。 如果我将 commit() 留在那里并且从不删除它,这不是什么大问题,但我只想知道发生了什么。

我截取了终端输出和 CloudSQL 数据库的屏幕截图,这是我的代码。

import mysql.connector

connection = mysql.connector.connect(host='127.0.0.1',
                             user='root',
                             password='root',
                             db='account')
con = connection.cursor()

firstname = "Test123"
lastname = "Test123"
phone = "1234567890"
email = "yi@gmail.com"
address1 = "RMIT Street"
address2 = "Melbourne"
postcode = "1234"
state = "VIC"
username = "test111"
password = "abc123"

#userid will auto increment
statement = "INSERT INTO user (firstname, lastname, phone, email, address1, address2, postcode, state, username, password) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
value = (firstname,lastname,phone,email,address1,address2,postcode,state,username,password)

con.execute(statement,value)
connection.commit()


con.execute("select * from user")
for a,b,c,d,e,f,g,h,i,j,k in con.fetchall():
    print (a,b,c,d,e,f,g,h,i,j,k)

这不是 Python 的问题,这是预料之中的。 看起来您有一些失败的插入,InnoDB 实际上是一个事务引擎。

示例 - 会话 A 插入记录 1 会话 B 插入记录 2 会话 C 插入记录 3 会话 D 失败并回滚 现在插入的下一个 ID 将是 4,但 3 不会在那里..

参考 -