python对MySQL进行数据的插入、更新和删除之后需要commit,数据库才会真的有数据操作。(待日后更新)

时间:2022-09-09 20:26:55

  今天在尝试用下面的python代码对MySQL进行数据的插入、更新和删除时, 突然发现代码执行成功, 通过代码查询也显示数据已经插入或更新, 但是当我在MySQL客户端通过SQL语句查询时, 数据库中的数据一点变化都没有。 又反复实验了多次, 结果都是一样的。

 #!/usr/bin/python
#Program:
# to get some information from mysql
import MySQLdb as mdb
import sys conn = mdb.connect(host = 'localhost', user = 'root', passwd = '8023xue0526', db = 'contact') cur = conn.cursor()
cur.execute("insert into contact values('222221', 'ni')")
cur.execute("select * from contact")
row_num = int(cur.rowcount)
for i in range(row_num):
row = cur.fetchone()
print row
cur = conn.cursor()
conn.close()

  通过在网上查找, 最终才有了一点眉目, 此问题与MySQL的存储引擎对事务的支持有关。 原来MySQL中有多种类型的存储引擎, 例如: MyISAM, InnoDB等。 MyISAM不支持事务处理, 而InnoDB是事务型数据库, 支持事务。  我的MySQL的默认存储引擎就是InnoDB, 所以对数据库数据的操作会在事先分配的缓存中进行, 只有在commit之后, 数据库的数据才会改变。 修改后的代码如下:

 #!/usr/bin/python
#Program:
# to get some information from mysql
import MySQLdb as mdb
import sys conn = mdb.connect(host = 'localhost', user = 'root', passwd = '8023xue0526', db = 'contact') cur = conn.cursor()
cur.execute("insert into contact values('222221', 'ni')")
cur.execute("select * from contact")
row_num = int(cur.rowcount)
for i in range(row_num):
row = cur.fetchone()
print row
#在数据操作完成之后,进行commit,完成数据库的数据更新
conn.commit()
cur = conn.cursor()
conn.close()

  但是以前在用MySQL C API 对数据库进行数据操作的时候没有这情况, 通过查看资料, autocommit变量的状态决定是否每次对数据操作之后自动commit, 在MySQL客户端里autocommit=ON时, 在客户端输入SQL语句, 每次都会自动执行一次commit。 我查看了自己的MySQL的autocommit为ON,  但是还是没搞清楚为什么同在InnoDB存储引擎下, autocommit=ON, 用C API 无需commit, 而用Python API 必须commit。     看到此文章的网友如果知道, 多谢你能给我解惑。。

python对MySQL进行数据的插入、更新和删除之后需要commit,数据库才会真的有数据操作。(待日后更新)的更多相关文章

  1. 09Microsoft SQL Server 表数据插入,更新,删除

    Microsoft SQL Server 表数据插入,更新,删除 向表中插入数据 INSERT INTO insert into tb1 values(0004,'张凤凤') insert into ...

  2. 在DataTable中更新、删除数据

    /*在DataTable中选择记录*/            /* 向DataTable中插入记录如上,更新和删除如下:             * ----但是在更新和删除前,首先要找出要更新和删除 ...

  3. AngularJS进阶(十一)AngularJS实现表格数据的编辑,更新和删除

    AngularJS实现表格数据的编辑,更新和删除 效果 实现 首先,我们先建立一些数据,当然你可以从你任何地方读出你的数据 var app = angular.module('plunker', [' ...

  4. 数据批量插入MSSQL

    MSSQL数据批量插入优化详细   序言 现在有一个需求是将10w条数据插入到MSSQL数据库中,表结构如下,你会怎么做,你感觉插入10W条数据插入到MSSQL如下的表中需要多久呢? 或者你的批量数据 ...

  5. MySQL高级查询与编程笔记 • 【第5章 常见数据库对象】

    全部章节   >>>> 本章目录 5.1 视图 5.1.1 视图的定义 5.1.2 视图的优点 5.1.3 视图的创建和使用 5.1.4 利用视图解决数据库的复杂应用 5.1. ...

  6. MySQL基础之第11章 插入、更新与删除数据

    11.1.插入数据 11.1.1.为表的所有字段插入数据 1.INSERT语句中不指定具体的字段名         insert into 表名 values (值1,值2…值n)2.INSERT语句 ...

  7. mysql根据查询结果批量更新多条数据(插入或更新)

    mysql根据查询结果批量更新多条数据(插入或更新) 1.1 前言 mysql根据查询结果执行批量更新或插入时经常会遇到1093的错误问题.基本上批量插入或新增都会涉及到子查询,mysql是建议不要对 ...

  8. MySQL插入,更新,删除数据

    插入 单行插入 1.insert into 表名 values(col1_value,col2_value,...); 每个列必须提供一个值,如果没有值,要提供NULL值 每个列必须与它在表中定义的次 ...

  9. 使用Python创建MySQL数据库实现字段动态添加以及动态的插入数据

    应用场景: 我们须要设计一个数据库来保存多个文档中每一个文档的keyword. 假如我们每一个文档字符都超过了1000,取当中出现频率最大的为我们的keyword. 如果每个文档的keyword都超过 ...

随机推荐

  1. webstorm2016注册码

    43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  2. python未知网卡名情况下获取本机IP

    import socket def get_ip(): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: # doesn't even ...

  3. nyoj-----42一笔画问题

    一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下 ...

  4. 举例详解CSS中的继承

    CSS的继承是由所使用的样式属性定义的.换句话说,当你查看CSS属性backgruound-color,你会看到一栏「继承性」,也许你几乎没有在意过它,但是它还是十分有用的.什么是CSS继承 每一个元 ...

  5. slf4j 和 log4j使用案例

    以Maven项目为例: 步骤: 1.在Maven的pom.xml文件中添加dependency: 之后就会添加3个jar包: 2.在项目下添加log4j.properties  3.log4j.pro ...

  6. POJ 2370 Democracy in danger(简单贪心)

    Democracy in danger Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3388   Accepted: 25 ...

  7. C#委托之我见

    委托的使用方式很简单,了解一下基本语法就可以开撸了.但是使用委托的真正难题是不知道应用场景,就像习得了一门新功夫,但是却找不到任何施展拳脚的地方.这个难题一直困然着我,直到最近仿佛有所领悟,所以赶紧记 ...

  8. HashMap 和 HashTable 的区别

    1. 存储结构 HashMap HashTable 数组 + 链表/红黑树 数组 + 链表 HashMap的存储规则: 优先使用数组存储, 如果出现Hash冲突, 将在数组的该位置拉伸出链表进行存储( ...

  9. spring AbstractRoutingDataSource实现动态数据源切换

    使用Spring 提供的 AbstractRoutingDataSource 实现 创建 AbstractRoutingDataSource 实现类,负责保存所有数据源与切换数据源策略:public ...

  10. 人人贷网的数据爬取(利用python包selenium)

    记得之前应同学之情,帮忙爬取人人贷网的借贷人信息,综合网上各种相关资料,改善一下别人代码,并能实现数据代码爬取,具体请看我之前的博客:http://www.cnblogs.com/Yiutto/p/5 ...