python下操作数据库
来源:互联网 发布:没有在网络上发现mfp 编辑:程序博客网 时间:2024/06/16 20:33
在Windows平台上安装mysql模块用于Python开发
用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示。下边是打包了32与64版本。
MySQL-python-1.2.3.win32-py2.7.exe
执行事务
用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示。下边是打包了32与64版本。
MySQL-python-1.2.3.win32-py2.7.exe
MySQL-python-1.2.3.win-amd64-py2.7.exe
我使用的为window10 64,故安装了64位版本
下载地址:http://vdisk.weibo.com/s/aBSXQ0shtv7cN
Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口
DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。
Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。
Python DB-API使用流程:
- 引入 API 模块。
- 获取与数据库的连接。
- 执行SQL语句和存储过程。
- 关闭数据库连接。
在python下执行
import MySQLdb
若不出错,则mysql模块安装成功
创建数据库 TESTDB.在TESTDB数据库中创建表 EMPLOYEE,进行增删改查操作。
执行事务
事务机制可以确保数据一致性。
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
- 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
- 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。删除一个元素,与其相关的元素都应删除。
- 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。不要同时多用户访问数据库。
- 持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。通过二进制事务日志记录事务过程中数据库系统变化。
Python DB API 2.0 的事务提供了两个方法 commit 或 rollback。
对于支持事务的数据库, 在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。
commit()方法游标的所有更新操作,rollback()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务
#coding:utf-8#引用模块import MySQLdb as mdb#打开数据库连接db = mdb.connect("localhost","root","chejian","TESTDB");#获取操作游标cursor = db.cursor()#若表存在,则删除。。。 当不存在时,这儿执行后的警告并不影响以后语句的执行cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")#创建数据库的SQL语句sql = """CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT , SEX CHAR(1), INCOME FLOAT)"""cursor.execute(sql)#插入记录 可以使用变量向SQL语句中传递参数sql ="""INSERT INTO EMPLOYEE(FIRST_NAME,LAST_NAME,AGE,SEX,INCOME) VALUES('Mac','Mohan',20,'M',2000)"""sql1 ="""INSERT INTO EMPLOYEE(FIRST_NAME,LAST_NAME,AGE,SEX,INCOME) VALUES('FreeBSD','Mohan',19,'M',1000)"""try: cursor.execute(sql) cursor.execute(sql1) #当对数据库数据改变时,提交到数据库执行 db.commit()except: #若有错误,则回滚 db.rollback()#数据库查询sql = "SELECT * FROM EMPLOYEE \ WHERE INCOME > '%d' " %(500)try: cursor.execute(sql) #获取所有记录列表 results = cursor.fetchall() for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] print "fname=%s,lname=%s,age=%d,sex=%s,income=%d " % \ (fname,lname,age,sex,income)except: print "Error: unable to fetcg data"#更新数据库sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')try: cursor.execute(sql) db.commit()except: db.rollback()#删除操作sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d' " % (20)try: cursor.execute(sql) db.commit()except: db.rollback()#关闭数据库连接db.close()
阅读全文
0 0
- python下操作数据库
- Python下MySQL数据库操作
- python下使用MySQLdb操作MYSQL数据库
- 在windows环境下使用Python操作spatialite数据库
- Windows下python连接、操作oracle数据库(cx_Oracle)
- Python操作Mysql数据库
- python的数据库操作
- python操作数据库
- python SQlite数据库操作
- python操作MySQL数据库
- python操作MySQL数据库
- python操作数据库
- Python 数据库操作
- python操作MySQL数据库
- python操作MySQL数据库
- python操作MySQL数据库
- Python 操作Oralce数据库
- python操作MySQL数据库
- Linux上安装mysql数据库
- bzoj2877 [Noi2012]魔幻棋盘 二维线段树
- ubuntu 通过命令行锁屏
- 研一这一年
- java学习笔记
- python下操作数据库
- 15th 【最短路 dijkstra】最小花费
- rpm命令
- ASCII码表中的数字和我们运算用的纯数字有何区别?
- 记录下os.path.dirname(__file__)使用
- Redis的集群安装以及rehash重新迁移教程指南
- Java中hashCode的作用
- 微生物测序样本准备方法总结
- 新手学习-Tcp的服务端与客户端之间进行通讯