我在两台计算机上使用MySQLdb并将其连接到同一个MySQL数据库。此数据库包含一个名为dbtest
的数据库,其中包含50行的表test
,定义如下:
CREATE TABLE test (
id int PRIMARY KEY AUTO_INCREMENT,
val varchar(255)
)
我使用解释器来设置问题:
# Run this on the 2 computers Python interpreter :
import MySQLdb
connection = MySQLdb.connect(host="<database hostname>", user="root", passwd="<root password>")
cursor = connection.cursor()
cursor.execute("USE dbtest")
print cursor.execute("SELECT * FROM test") # will print 50.
好的。这两个连接已设置完毕。现在让我们在第一个客户端添加一行:
# Run this on computer 1 :
cursor.execute("INSERT INTO test (val) VALUES ('gosh stackoverflow is so good !')")
connection.commit()
print cursor.execute("SELECT * FROM test") # will print 51.
听起来不错,WireShark打印出数据库返回的51行。但随着电脑2 ......
# Run this on computer 2 :
print cursor.execute("SELECT * FROM test") # will print 50, expected 51 because of the insert.
为什么我这里有50行?如何避免这个问题?
很抱歉,如果它重复,我可能找不到合适的关键字。
编辑:如果我重置计算机2上的连接,我有51行。