第十三章 Python数据库编程
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本章节讲解Python操作数据库,完成简单的增删改查工作,以MySQL数据库为例。Python的MySQL数据库操作模块叫MySQLdb,需要额外的安装下。通过pip工具安装:pip install
千家信息网最后更新 2026年11月02日第十三章 Python数据库编程
本章节讲解Python操作数据库,完成简单的增删改查工作,以MySQL数据库为例。
Python的MySQL数据库操作模块叫MySQLdb,需要额外的安装下。
通过pip工具安装:pip install MySQLdb
MySQLdb模块,我们主要就用到连接数据库的方法MySQLdb.Connect(),连接上数据库后,再使用一些方法做相应的操作。
MySQLdb.Connect(parameters...)方法提供了以下一些常用的参数:
参数 | 描述 |
| host | 数据库地址 |
| user | 数据库用户名, |
| passwd | 数据库密码,默认为空 |
| db | 数据库库名,没有默认库 |
| port | 数据库端口,默认3306 |
| connect_timeout | 连接超时时间,秒为单位 |
| use_unicode | 结果以unicode字符串返回 |
| charset | 插入数据库编码 |
连接对象返回的connect()函数:
| commit() | 提交事务。对支持事务的数据库和表,如果提交修改操作,不适用这个方法,则不会写到数据库中 |
| rollback() | 事务回滚。对支持事务的数据库和表,如果执行此方法,则回滚当前事务。在没有commit()前提下。 |
| cursor([cursorclass]) | 创建一个游标对象。所有的sql语句的执行都要在游标对象下进行。MySQL本身不支持游标,MySQLdb模块对其游标进行了仿真。 |
游标对象也提供了几种方法:
| close() | 关闭游标 |
| execute(sql) | 执行sql语句 |
| excutemany(sql) | 执行多条sql语句 |
| fetchone() | 从执行结果中取第一条记录 |
| fetchmany(n) | 从执行结果中取n条记录 |
| fetchall() | 从执行结果中取所有记录 |
| scroll(self, value, mode='relative') | 游标滚动 |
博客地址:http://lizhenliang.blog.51cto.com
QQ群:323779636(Shell/Python运维开发群)
13.1 数据库增删改查
13.1.1 在test库创建一张user表,并添加一条记录
>>> conn = MySQLdb.Connect(host='192.168.1.244',user='root',passwd='QHyCTajI',db='test',charset='utf8')>>> cursor = conn.cursor()>>> sql = "create table user(id int,name varchar(30),password varchar(30))">>> cursor.execute(sql) # 返回的数字是影响的行数0L >>> sql = "insert into user(id,name,password) values('1','xiaoming','123456')">>> cursor.execute(sql)1L>>> conn.commit() # 提交事务,写入到数据库>>> cursor.execute('show tables') # 查看创建的表1L>>> cursor.fetchall() # 返回上一个游标执行的所有结果,默认是以元组形式返回((u'user',),)>>> cursor.execute('select * from user') 1L>>> cursor.fetchall()((1L, u'xiaoming', u'123456'),)13.1.2 插入多条数据
>>> sql = 'insert into user(id,name,password) values(%s,%s,%s)'>>> args = [('2','zhangsan','123456'), ('3','lisi','123456'),('4','wangwu','123456')] >>> cursor.executemany(sql, args)3L>>> conn.commit()>>> sql = 'select * from user'>>> cursor.execute(sql)4L>>> cursor.fetchall()((1L, u'xiaoming', u'123456'), (2L, u'zhangsan', u'123456'), (3L, u'lisi', u'123456'), (4L, u'wangwu', u'123456'))args变量是一个包含多元组的列表,每个元组对应着每条记录。当查询多条记录时,使用此方法,可有效提高插入效率。
13.1.3 删除用户名xiaoming的记录
>>> sql = 'delete from user where name="xiaoming"'>>> cursor.execute(sql) 1L>>> conn.commit()>>> sql = 'select * from user' >>> cursor.execute(sql) 3L>>> cursor.fetchall() ((2L, u'zhangsan', u'123456'), (3L, u'lisi', u'123456'), (4L, u'wangwu', u'123456'))
13.1.4 查询记录
>>> sql = 'select * from user' >>> cursor.execute(sql) 3L>>> cursor.fetchone() # 获取第一条记录(2L, u'zhangsan', u'123456')>>> sql = 'select * from user' >>> cursor.execute(sql) 3L>>> cursor.fetchmany(2) # 获取两条记录((2L, u'zhangsan', u'123456'), (3L, u'lisi', u'123456'))
13.1.4 以字典形式返回结果
默认显示是元组形式,要想返回字典形式,使得更易处理,就用到cursor([cursorclass])中的cusorclass参数。
传入MySQLdb.cursors.DictCursor类:
>>> cursor = conn.cursor(MySQLdb.cursors.DictCursor)>>> sql = 'select * from user'>>> cursor.execute(sql)3L>>> cursor.fetchall()({'password': u'123456', 'id': 2L, 'name': u'zhangsan'}, {'password': u'123456', 'id': 3L, 'name': u'lisi'}, {'password': u'123456', 'id': 4L, 'name': u'wangwu'})13.2 遍历查询结果
#!/usr/bin/env python# -*- coding: utf-8 -*-import MySQLdbtry: conn = MySQLdb.Connect(host='127.0.0.1', port=3306, user='root', passwd='123456', connect_timeout=3, charset='utf8') cursor = conn.cursor() sql = "select * from user" cursor.execute(sql) for i in cursor.fetchall(): print iexcept Exception, e: print ("Connection Error: " + str(e))finally: conn.close() # python test.py(2L, u'zhangsan', u'123456')(3L, u'lisi', u'123456')(4L, u'wangwu', u'123456')使用for循环遍历查询结果,并增加了异常处理。
数据
数据库
游标
结果
事务
方法
对象
形式
查询
参数
多条
模块
语句
支持
地址
字典
此方法
用户
用户名
有效
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网核心科技是什么
科技服务与互联网
迪茉互联网科技
北京互联网络科技有限公司
深圳天众互联网科技公司
互联网科技论坛
中国互联网金融科技基金
科技伦理 互联网公司
科技大学互联网专业好不好
金融科技与互联网金融相同和不同
贵州叶脉互联网科技有限公司所属行业
畅思互联网科技
允成互联网科技有限公司融资
明优互联网科技有限公司
华中科技大学互联网的牛人
四川互联网展示科技馆设计
互联网科技年终奖
宁波跨境商互联网科技有限公司
陕西彩京云互联网科技有限公司
广州全民伙伴互联网科技有限公司
互联网科技论坛
宁波青枫互联网科技有限公司
中化能源互联网科技招聘
上海宁丞科技互联网
迪庆互联网科技招生
中科明德北京互联网科技
工业互联网科技创业
上海乐五互联网科技有限公司
福仕德教育科技互联网
知域互联网科技有限公司官网