在做测试的时候,大部分同学都是使用的pymysql来操作数据库,那么今天就给大家介绍一个很厉害的第三方库来操作数据库records。这是什么?干什么用的?哪个犄角旮旯的库?是不是很多同学有这样的疑问。做接口自动化的同学一定不陌生的一个库requests,这里告诉大家,records和requests是一个作者,惊不惊喜,意不意外。那么有人就会问了,这个库有什么特殊,总结起来有这么写点
-
records 支持多种不同的数据库
-
records 的方法非常简单和统一,不像 pymysql 还需要记住如游标对象这样的底层信息
-
支持数据库事务
-
轻松导出为 json, yaml, xls, xlsx, pandas, html 等多种数据格式
好了,说了这么多,迫不及待的来体验一下
安装
pip install records
使用
连接数据库,返回 db 数据库对象,db 对象执行 sql 语句
连接数据库
获取数据库的格式是标准的 URL 格式,如果使用的不是 mysql 数据库,只需要换掉数据库类型就可以了
import records
# 获取数据库
db = records.Database('mysql+pymysql://user:pw@localhost:3306/dev')
'''
mysql 数据库类型
pymysql db-api
user 数据库账号
pw 数据库密码
localhost 数据库地址
3306 端口
dev 连接的库名
'''
创建表
create_table = """CREATE TABLE IF NOT EXISTS user (
name varchar(50),
age int
) DEFAULT CHARSET=utf8 ;"""
db.query(create_table)
插入数据
-
插入单条数据
records 支持使用
:variable定义变量,通过参数传入完成动态传值,在需要动态加载数据的时候非常有用
user = {"name": "张三", "age": 20}
db.query('INSERT INTO user(name,age) values (:name, :age)', **user)
-
插入多条数据
records 提供的 bulk_query 方法能快捷的插入和更新多条数据
users = [
{"name":"张三", "age": 20},
{"name":"李四", "age": 30},
{"name":"王五", "age": 40}
]
db.bulk_query('INSERT INTO user(name,age) values (:name, :age)', users)
查询
我们用的最多的就是查询操作,查询提供多种方式
-
all() 返回所有的数据
-
first() 返回第一条数据
-
one() 返回唯一的数据,如何查询的表只有一条数据,可以用这个方法
这些方法默认返回所有行的列表,可以使用参数as_dict=True转成字典形式;as_ordereddict=True转成排序字典形式
返回第一条数据
def getFirstDate(self, sql):
# 连接数据库
db = records.Database('mysql+pymysql://root:pwip:3306/yz')
# 查询
rows = db.query(sql)
# 以字典形式返回第一条数据
result = rows.first(as_dict=True)
return result
# 输出
ic| db.getFirstDate(sql2): {'department': '计算机系', 'id': 1, 'name': '张三'}
返回所有的数据
def getAllDate(self, sql):
db = records.Database('mysql+pymysql://root:pw@ip:3306/yz')
rows = db.query(sql)
# 返回所有查询数据
return rows.all(as_dict=True)
# 输出
ic| db.getAllDate(sql2): [{'department': '计算机系', 'id': 1, 'name': '张三'},
{'department': '音乐系', 'id': 2, 'name': '李四'},
{'department': '美术系', 'id': 3, 'name': '王五'},
{'department': '英语系', 'id': 4, 'name': '李二蛋'},
{'department': '工程系', 'id': 5, 'name': '王翠花'},
{'department': '考古系', 'id': 6, 'name': '钱多多'},
{'department': '哲学系', 'id': 7, 'name': '牛二花'},
{'department': '计算机系', 'id': 8, 'name': '王铁柱'},
{'department': '计算机系', 'id': 9, 'name': '孙悟空'}]
导出数据
-
导出为json
def json_data(self, sql):
db = records.Database('mysql+pymysql://root:pwip:3306/yz')
rows = db.query(sql)
with open('test.json', 'w') as f:
f.write(rows.export('json'))
结果

-
导出到Excel
def json_data(self, sql):
db = records.Database('mysql+pymysql://root:pwip:3306/yz')
rows = db.query(sql)
with open('test.xlsx', 'wb') as f:
f.write(rows.export('xlsx'))
结果

好啦,records就介绍到这里,更多用法有兴趣的同学可以去实际操练一番,源码非常简单,你一定看的懂。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/105556.html