Python数据库编程
发布日期:2021-06-30 15:00:59
浏览次数:2
分类:技术文章
本文共 2758 字,大约阅读时间需要 9 分钟。
操作数据库的基本流程
使用Python DB API 2.0操作数据库的基本流程如下:
- 调用connect()方法打开数据库连接,该方法返回数据库连接对象。
- 通过数据库连接对象打开游标。
- 使用游标执行SQL语句。
- 关闭游标。
- 关闭数据库连接。
操作SQLite数据库
SQLite只是一个嵌入式的数据库引擎,专门适用于在资源有限的设备上进行适量数据的存取。只是一个文件,不需要服务器进程。
>>> import sqlite3>>> sqlite3.apilevel'2.0'>>> conn = sqlite3.connect('first.db')>>> c = conn.cursor()>>> c.execute("""... create table user_tb(... _id integer primary key autoincrement,... name text,... pass text,... gender text)""")>>> c.execute("""... create table order_tb(... _id integer primary key autoincrement,... item_name text,... item_price real,... item_number real,... user_id inteter,... foreign key(user_id) references user_tb(_id) )""") >>> c.close()>>> conn.close()
使用SQLite Expert工具
插入一条数据
>>> import sqlite3>>> conn = sqlite3.connect('first.db')>>> c = conn.cursor()>>> c.execute('insert into user_tb values(null, ?, ?, ?)', ('孙悟空', '123456', 'male'))>>> conn.commit()>>> c.close()>>> conn.close()
插入多条数据
>>> import sqlite3>>> conn = sqlite3.connect('first.db')>>> c = conn.cursor()>>> c.executemany('insert into user_tb values(null, ?, ?, ?)',... (('sun', '123456', 'male'),... ('bai', '123456', 'female'),... ('zhu','123456','male')))executemany()方法执行一条insert语句, 但调用该方法的第二个参数是一个元组,该元组的每个元素都代表执行该insert语句一次,在执行insert语句时这些元素负责为该语句中的“?”占位符赋值。>>> conn.commit()>>> c.close()>>> conn.close()
一次update多条语句
>>> import sqlite3>>> conn = sqlite3.connect('first.db')>>> c = conn.cursor()>>> c.executemany('update user_tb set name=? where _id=?',... (('小孙孙', 2),... ('小白', 3)))>>> c.rowcount2>>> conn.commit()>>> c.close()>>> conn.close()
查找
>>> import sqlite3>>> conn = sqlite3.connect('first.db')>>> c = conn.cursor()>>> c.execute('select * from user_tb where _id > ?', (2,))>>> for col in (c.description):... print(col[0], end='\t')..._id name pass gender >>>>>> while True:... row = c.fetchone()... if not row:... break... print(row)...(3, '小白', '123456', 'female')(4, 'zhu', '123456', 'male')
通过游标还可以使用:fetchone()、fetchmany(n)、fetchall()来获取查询结果。
执行SQL脚本
使用c.executescript()来执行一段SQL脚本。
创建自定义函数
使用conn.create_function()注册自定义函数。
创建聚集函数
标准的SQL语句提供了:sum(),avg(),count(),max(),min().
conn.create_aggregate(name, num_params, aggregate_class) name:指定自定义聚集函数的名字 num_params:指定聚集函数所需的参数 aggregate_class:指定聚集函数的实现类,该类必须实现step(),finalize()方法,step方法对于查询所返回的每条记录各执行一次,finalize方法只在最后执行一次,该方法返回值将作为聚集函数最后的返回值。class MinLen: def __init__(self): pass def step(self): pass def finalize(self): pass
conn.create_aggregate('min_len',1,MinLen)c = conn.cursor()c.execute('select min_len(pass) from user_tb')
创建比较函数
conn.create_collation('sub_cmp', my_collate)c = conn.cursor()c.execute('select * from user_tb order by pass collate sub_cmp')
- 参考文献:《疯狂python讲义》李刚 编
转载地址:https://jiaming.blog.csdn.net/article/details/103529813 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月23日 05时48分34秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
如何在MAC机器中实现移动设备WiFI上网(没有专门的无线路由器的情况)
2019-05-01
从零开始安装Hadoop视频教程
2019-05-01
一款非常实用的在线代码分享站点
2019-05-01
教你一分钟制作自己的电子书(视频)
2019-05-01
用ipad维护Linux服务器
2019-05-01
如何用手机维护Mysql数据库
2019-05-01
企业内网信息安全实践-记ChinaUnix技术交流
2019-05-01
完成《Java编程入门》初稿
2019-05-01
Windows Server 2012下安装Hyper-V虚拟机
2019-05-01
MacOSX和Windows 8的完美融合
2019-05-01
Iphone5S 体验(视频+截图)
2019-05-01
python 多进程之进程池的操作
2019-05-01
flask入门学习之第一个程序及装饰器回顾
2019-05-01
flask整理之 flask程序中的debug模式
2019-05-01
如何和大妈解释区块链,让他们理解区块链
2019-05-01
比特币要出现夭折?或许会出现转折
2019-05-01
比特币,山寨币,到底谁占有主导地位
2019-05-01
比特币,父母这一辈能接受吗?
2019-05-01