python records库_Python Records库使用举例
连接数据库
Records使用sqlalchemy的create_engine,DBAPI可以完全参照sqlalchemy文档
"""PostgreSQL"""
#default
db = records.Database('postgresql://scott:tiger@localhost/mydatabase')#psycopg2
db = records.Database('postgresql+psycopg2://scott:tiger@localhost/mydatabase')#pg8000
db = records.Database('postgresql+pg8000://scott:tiger@localhost/mydatabase')"""MySQL"""
#default
db = records.Database('mysql://scott:tiger@localhost/foo')#mysqlclient (a maintained fork of MySQL-Python)
db = records.Database('mysql+mysqldb://scott:tiger@localhost/foo')#PyMySQL
db = records.Database('mysql+pymysql://scott:tiger@localhost/foo')"""Oracle"""db= records.Database('oracle://scott:tiger@127.0.0.1:1521/sidname')
db= records.Database('oracle+cx_oracle://scott:tiger@tnsname')"""Microsoft SQL Server"""
#pyodbc
db = records.Database('mssql+pyodbc://scott:tiger@mydsn')#pymssql
db = records.Database('mssql+pymssql://scott:tiger@hostname:port/dbname')"""SQLite"""
#for a relative file path
db = records.Database('sqlite:///foo.db')#for a absolute file path#UNIX/MAC
db = records.Database('sqlite:absolute/path/to/foo.db')#Windows
db = records.Database('sqlite:///C:\\path\\to\\foo.db')#Windows using raw string
db = records.Database(r'sqlite:///C:\path\to\foo.db')#for a memory database
db = records.Database('sqlite://')
查询
Records可以方便的使用SQL语句来查询数据,通过调用query方法,得到返回的结果
rows = db.query('SELECT * FROM users')
对于查询语句来说,Records返回的是一个Record对象或Record对象的一个列表。我们可以调用Record对象内置方法,比如:
as_dict() 作为一个字典返回。
as_dict(ordered=True) 作为一个OrderedDict返回。
我们还可以像操作字典一样去操作Record对象,比如使用keys()和values()
rows = db.query(query=sql, fetchall=True, **kwargs)for k inrows.as_dict():print(k.values())--------------------------------dict_values(['2222', '小张'])
dict_values(['3333', '小李'])
Records使用tablib来处理数据导出,tablib是一个纯Python编写的格式无关的表格数据处理库,使用tablib我们可以方便的将Records对象导出成下列格式:
Excel (Sets + Books)
JSON (Sets + Books)
YAML (Sets + Books)
Pandas DataFrames (Sets)
HTML (Sets)
CSV (Sets)
在Records类中,内置了一个dataset属性,用来生成一个tablib的Dataset对象,也提供了一个export方法,可以将Dataset对象转化为我们所需要的格式
with open('user.xls', 'wb') as f:
f.write(rows.export('xls'))
综合实例
导出用户表记录到excel
importrecordsimportosimportsysimporttablib
BASE_DIR= os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)#加入环境变量
from conf importrecords_db_set
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
#设置中文,防止报乱码错误
db =records.Database(records_db_set.BDDB)
params= {'userid':'1111'}
sql= '''SELECT userid as "用户ID",username as "用户名称" FROM M_USER where userid > :userid'''xls_name='user.xls'
def export_recods(db, xls_name, sql, **kwargs):"""导出数据库记录保存为xls形式
:param db: db对象
:param xls_name: xls_name文件名
:param sql: sql语句
:param kwargs: where条件
:return:"""
#headers为excel 表头
#title 为sheet名称
dataset = tablib.Dataset(headers=['用户ID', '用户名称'], title='用户表')
rows= db.query(query=sql, fetchall=True, **kwargs)for k inrows.as_dict():print(k.values())
dataset.append(k.values())
with open(xls_name,'wb') as f:
f.write(dataset .export(format='xls',))
export_recods(db,xls_name,sql,**params)
结果
常见错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd3 in position 0: invalid continuation byte
解决:
设置环境变量中文
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
python records库_Python Records库使用举例相关推荐
- python argparse库_python标准库之argparse
argparse的使用 argparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并 ...
- python机器学习库_Python机器学习库 Top 10,你值得拥有!
随着人工智能技术的发展与普及,Python超越了许多其他编程语言,成为了机器学习领域中最热门最常用的编程语言之一.有许多原因致使Python在众多开发者中如此受追捧,其中之一便是其拥有大量的与机器学习 ...
- python xlwings 切片_Python xlwings库学习笔记(1)
Python xlwings库学习笔记(1) Python是最近几年很火的编程语言,被办公自动化的宣传吸引入坑,办公自动化必然绕不开Excel的操作,能操作Excel的库有很多,例如: xlrd xl ...
- python 数据分析 库_Python数据分析库
python 数据分析 库 什么是数据分析? (What is Data Analytics?) Data is power. Insights acquired from data is the k ...
- 机器学习 python 库_Python机器学习库
机器学习 python 库 什么是机器学习? (What is Machine Learning?) As the web is immensely growing with each day, an ...
- python的标识库和第三方库_Python 标准库、第三方库
Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具.这些库可用于文件读写.网络抓取和解析.数据连接.数清 ...
- python单词库_python 单词库
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python官方教程的最后一个部分就是标准库概览,在这里我们浏览一下标准库,了解 ...
- python调用数学库_python 数学库
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我正在寻找一个3d数学库在python或python绑定. 它需要处理旋转,平移 ...
- python多线程库_python多线程库
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python 多线程 多线程类似于同时执行多个不同程序,多线程运行有如下优点:使 ...
最新文章
- Web Api单元测试写法
- java中Thread与Runnable的区别
- OpenGL 几何着色器Geometry Shader
- 【MFC】CWinApp类详解
- public,protected,private
- java基础——浅析设计模式之单例模式
- layui横向时间线_除了性能“铁三角”还有什么?iQOO 3全新横向线性马达上手体验...
- 基于开源 Rexsee 的 UP 移动浏览器开放测试
- Day621.Spring Test 常见错误 -Spring编程常见错误
- 微信小程序+百度AI OCR二代身份证识别
- 二次元究竟招惹了谁?谣言煽动背后的文化迷思,警惕有可能发生的思想劫持【文明启示录#01】【补档】
- Android:ping
- 问题: Mac外联硬盘不能更改“-”中的一个或多个项目,因为它们正在使用中
- originpro2021导入excel(.xls)
- 如何搭建“业务化”的指标体系?
- 数据库SQL(五):Integrity Constraints(完整性约束)
- 大文件上传+解决方案
- 八道C语言指针笔试题——拿捏指针
- 蓝桥杯单片机比赛学习:6、中断系统之定时器中断的基本原理
- Google Weather API 参考文档
热门文章
- php xml解析为数组,PHP如何将XML转成数组
- python爬虫select用法_Python爬虫利器二之Beautiful Soup的用法
- java 最大线程数_JVM可生产的最大线程数 Thread 数量
- html快捷键_Mac进阶:掌握这 5 个冷门快捷键,让Mac更好用
- listctrl 优化_上海SEO整站优化公司_新站整站快速排名优化
- 安全云盘项目(三):3.1 Qt的工具_MVD架构和信号槽原理分析
- python在数据分析的应用_Python运用于数据分析的简单教程
- java接收post文件_java – 如何发送POST请求并获取文件响应?
- 存定期还能加钱进去吗_购买支付宝的定期理财产品,会亏钱吗?
- linux的文件权限前面的东西,linux 文件权限解析