我编写了一个python代码,在MySQL数据库中写入/读取数据。问题是,即使我在表中写了字,它仍然是空的。当我关闭程序时,我丢失了所有的数据。 我就是这样创建表的:
cursor.execute("CREATE TABLE IF NOT EXISTS employees (id INT UNSIGNED NOT NULL AUTO_INCREMENT,Name VARCHAR(20) NOT NULL,LastName VARCHAR(20) NOT NULL,Post VARCHAR(20) NOT NULL,RasID SMALLINT UNSIGNED NOT NULL,PRIMARY KEY (id)) ENGINE=INNODB;")
我就是这样在表中插入数据的:
cursor.execute("INSERT INTO employees VALUES (NULL, %s, %s, %s, %s);",(UserName, UserLastName, UserPost, int(data['RasID'])))
我是这样从表中选择数据的:
cursor.execute("SELECT * FROM employees WHERE Name= %s;",(Jmsg['face'],))
这是我在表中插入数据并且程序仍在运行后得到的结果:
mysql> select * from employees;
Empty set (0.00 sec)
注:我可以选择数据插入后,当程序仍在运行,但正如我提到的表是空的。那么,代码是写在临时表中还是什么?你知道吗
试试看
您可能在这里使用的MySQL Connector/Python不会自动提交,这意味着您必须手动“推送”对数据库的更改。你知道吗
您可能希望在每次
commit
之后execute
运行它,但有时也可能尝试运行它以节省带宽(但这样做可能会在出现问题时丢失更改)。你知道吗数据库中的事务在提交之前通常不起作用。 我不知道Python中的MySQL,但是我知道
sqlite3
的Connection
实例有一个commit
方法,它将事务写入数据库。你知道吗此外,在使用
sqlite3
时,通过调用Connection.close()
或(通过留下with
块)关闭连接应该写入当前事务。 但不管怎样,把一个打开的东西留下是不好的做法。 我所说的“坏习惯”是指“危险且容易滋生虫子”。你知道吗相关问题 更多 >
编程相关推荐