我的python代码写在一个临时数据bas中

2024-06-09 04:59:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个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)

注:我可以选择数据插入后,当程序仍在运行,但正如我提到的表是空的。那么,代码是写在临时表中还是什么?你知道吗


Tags: 数据代码name程序id数据库executemysql
2条回答

试试看

connection.commit()

您可能在这里使用的MySQL Connector/Python不会自动提交,这意味着您必须手动“推送”对数据库的更改。你知道吗

您可能希望在每次commit之后execute运行它,但有时也可能尝试运行它以节省带宽(但这样做可能会在出现问题时丢失更改)。你知道吗

数据库中的事务在提交之前通常不起作用。 我不知道Python中的MySQL,但是我知道sqlite3Connection实例有一个commit方法,它将事务写入数据库。你知道吗

此外,在使用sqlite3时,通过调用Connection.close()或(通过留下with块)关闭连接应该写入当前事务。 但不管怎样,把一个打开的东西留下是不好的做法。 我所说的“坏习惯”是指“危险且容易滋生虫子”。你知道吗

相关问题 更多 >