python标准数据库接口为Python DB-API,为开发人员提供了数据库应用编程接口
DB-API是一个规范,定义了一系列必须的对象和数据库存取方式,
便于各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口
MySQLdb用于python连接Mysql数据库的接口,
实现了python数据库API规范v2.0,基于mysql c API上建立
使用前需要安装该模块
简单实例:
import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset="utf8") # 使用cursor()方法获取操作游标 cursor = db.cursor() #使用execute方法执行SQL语句 cursor.execute("SELECT VERSION()") 使用fetchone()方法获取一条数据 data = cursor.fetchone() print "Database version: %s" % data #关闭数据库 db.close()
创建数据库表:
可以使用execute()方法来为数据库创建表
数据库插入/更新/删除操作,事务的方式执行
try: cursor.execute(sql) db.commit() except Exception,e: db.rollback()
数据库查询操作:
fetchone():该方法获取下一个查询结果集,结果集是一个对象
fetchall():接受全部的返回结果行
rowcount:这是一个只读属性,并返回执行execute()方法后影响的行数
错误处理:
#!/usr/bin/env python #coding:utf-8 import MySQLdb conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='123') conn.select_db('08day5')#选择数据库 cur=conn.cursor()#以元组的形式展示 #cur=conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)#以字典的形式展示 cur.execute('DROP TABLE IF EXISTS admin')#如果数据表已经存在,则使用execute()方法删除 #创建数据表 sql='''CREATE TABLE admin( id INT PRIMARY KEY AUTO_INCREMENT, user VARCHAR(20) NOT NULL, passwd VARCHAR(20) NOT NULL )''' cur.execute(sql) #插入单条记录 sql='insert into admin(user,passwd) values(%s,%s)'#使用sql语句,无论我们要插入的数据是什么类型,占位符都可以用%s params=('alex','usa') cur.execute(sql,params) conn.commit()#请注意:用commit()提交事务之后,才能真正的插入数据。 #插入多条记录(批量插入) sql='insert into admin(user,passwd) values(%s,%s)' l=[('song','222aaa'),('shi','333bbb'),('yuan','444ccc'),('xing','abcddd'),('cheng','kkjjhh')] cur.executemany(sql,l)#使用executemany()实现批量插入! conn.commit() #删除记录 sql='delete from admin where id=%s' params=(3,) cur.execute(sql,params) conn.commit() #查询记录 reCount=cur.execute('select * from admin')#返回本次操作影响的记录数 print reCount data=cur.fetchall()#获得 'select * from admin'语句 返回的结果集 print data cur.scroll(0,mode='absolute')#光标回到初始位置0处(绝对定位) print cur.fetchone()#此时,光标位置为0;返回位置为0的记录 print cur.fetchone()#返回位置为1的记录 cur.scroll(1,mode='absolute')#光标回到1处(绝对定位) print cur.fetchone()#返回位置为1的记录 cur.scroll(-2,mode='relative')#光标回退2步(相对定位) print cur.fetchmany(3)#从光标所在的位置(此时,光标位于0处),连续读取3条记录 cur.scroll(1,mode='relative')#光标前进1步(相对定位) print cur.fetchone()#返回光标(位于4处)指向的那一条记录print cur.lastrowid #获取插入数据的当自增ID #修改 sql='update admin set passwd=%s where user=%s' params=('123123','song') cur.execute(sql,params) conn.commit() cur.close() conn.close()
来源:https://www.cnblogs.com/djoker/p/9432037.html