python库源码分析_你的第一份Python库源码阅读:records

b03533fa828ba61e7bb29706dd9b4f0e314e59eb.jpeg?token=d69915d50861538b3a661ea7df5aad43&s=E5E69B554E40444F52B5E97803007073

基本介绍

records是kennethreitz的for Humans系列,使用原生sql去操作大多数的关系型数据库(Postgresql, MySQL, SQLite, Oracle和 MS-SQL),并且支持多种格式输出,如csv、excel、json等。

代码不超过1000行,如果是第一次尝试阅读python开源项目,这是一个很好的选择。作者Kennethreitz是requests的作者,python领域的大牛人物之一,关于他还有一个励志的故事[Kenneth Reitz的逆袭之路]

使用方法

records库的使用非常简单且人性化,定义数据库连接串和sql语句,然后将返回值作为rows打印出来,或者输出为文件,没有复杂的orm逻辑,实现逻辑很清晰

5882b2b7d0a20cf485258cc5e8a69332adaf99a3.jpeg?token=65a14cf4273676d6f6617b1da8029d8a&s=59A43C7219CA4C4114C595D90000C0B3

依赖库

records有一些pip依赖,每个依赖项的作用如下:

a08b87d6277f9e2fdaad92b8b79f3120b999f31f.jpeg?token=8fbfd8563a60dcbb201d4ab7bc61725a&s=3AAA7422913EE5CC48FD01DA0000C0B2

a2cc7cd98d1001e916faf7a126a1a3e856e7978a.jpeg?token=d26f7085671fd9972500237fcd0aa037&s=5AA8346319BED4CC4E7DD1DE000080B1

源码分析工具

建议的源码分析工具:pycharm3.x (运行调试)+ Source Insight 4.0(展示类/变量/方法结构图)

Source insight是一款很不错的阅读源码的工具,支持很多语言,有些人说好像3版本默认不支持python,需要配置,我下载的 Source Insight 4.0,没这个问题,打开就可以用。

代码结构

Database类:

封装基本数据库操作,主要使用query方法,调用SQLAlchemy的方法,获取结果后调用Record类获得Record生成器,再调用RecordCollection获得所有的结果

2f738bd4b31c8701ae1b0887bad0462b0608ff52.jpeg?token=ca5455dda50b547a54a62d1d6e1b0891&s=18A47C3295D84DC248D545DB000080B3

Record类:

接收database查询后的keys和rows,初始化时,检测是否长度一致,然后对其包装,使其支持迭代,支持直接to_dict转为dict对象,支持直接export导出。

9f510fb30f2442a7041f43d279ec754fd01302ec.jpeg?token=39bd7940ab902218fa2956d5f3fa793c&s=1AA47C23913EC5CC18F581DA0000C0B3

RecordCollection类:

部分方法和Record类相同,但RecordCollection实现了first方法,获取第一个row,如果不存在,则默认default为none,如果defalut本身就是实例或者exception的子类,直接抛出异常,另外,实现了一次实例化后多次查询时的缓存。

34fae6cd7b899e51f9087576df080137c9950d06.jpeg?token=b8b603bfd08b858f052a26ec7d59b9ee&s=58243C720B626D201ADDE1DA0000C0B3

全局变量和方法:

1c950a7b02087bf43bc411e4557c8f2810dfcfc3.jpeg?token=fbb6c48400159ce55545933c9499c156&s=5AA43C63110EC54D4A7D80DA0000C0B3基础概念:

基础概念:

4610b912c8fcc3cefb0bea5736ea0e8cd53f203a.jpeg?token=afea2e0cb0067e1f4d108f2b83afade1&s=1AAE7C239BBEE4CC00F980DB0000C0B2

0d338744ebf81a4cc16a9df57785b85d242da6e2.jpeg?token=ae5296603611955534b0eb0532d9880f&s=18A47C321BBEE4CE5875C5DA000050B3

测试DEMO

f703738da97739127dd574f866b65e1c347ae2e9.jpeg?token=e8d44eeb85c3b41a6830f8a58e1a0ccc&s=1CA67C32912ED74D52D501DA000080B2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值