Python Requests作者另一神作,Records通用而优雅的数据库访问库

MySQL数据库:mysql-connector , pymysqlPostgreSQL数据库:psycopg2Oracle数据库:cx_OracleSQLite数据库:sqlite3但这样却使得我们不得不面临一个问题 , 代码中涉及不同数据库 , 操作方式也不尽相同 , 容易出现代码冗余、不规范 , 风格不统一等等问题 。
后来接触到PythonSQLAlchemy(ORM框架)模块 , 一定程度上解决了各数据库的SQL差异 , 但SQLAlchemy在消除各数据库SQL差异的同时却会引入各框架CRUD的差异 。 而我们往往就具有一定的SQL基础 , 如果一个框架强制用户只能使用其规定的CRUD形式那反而增加用户的学习成本 , 导致长学习曲线 。
同时 , 个人为人直接地执行SQL而不是使用框架设定的CRUD不应当是一种低级的操作应当是一种被鼓厉的标准化行为 。
遇到RecordsRecords是一个非常简单且功能强大的库 , 适用于大多数关系型数据库的原始SQL操作 , 三个字 , 强无敌 。
Records的特点:
基于SQLAlchemy和Tablib开发 。 方法非常简单且统一 。 支持缓存查询的数据.自动实现上下文管理器 , 不需要关注数据连接状态 。 支持数据库事务 , 保持数据的原子性和一致性 。 支持安全的参数化查询 , 以安全的形式进行动态参数传递 , 防止sql语句不规范导致的安全问题;支持主流数据库 , 如RedShift,Postgres,MySQL,SQLite,Oracle,和MS-SQLRecords安装我们在Windows10Python3环境下 , 使用pip进行安装 , 安装命令如下:
pipinstallrecords安装过程如下:
首先 , 因Records是基于SQLAlchemy实现的 , 所以数据库链接方式参考SQLAlchemy , 如下
连接数据库 , 返回DB数据库对象 。 使用query方法执行SQL语句 。 创建表 as_dict=True:参数转成字典形式 。 as_ordereddict=True:转成排序字典形式 。 比如商品销量与存量的数据库操作:
读取商品销量数据 。 更新商品销量增加1 。 读取商品存量数量 。 更新商品存量减少1 。该场景下 , 我们须保证这4步均执行成功 。 如果第1步已经执行成功 , 但是到第3步发生了错误导致后面数据库操作不能执行 , 会导致商品销量与存量混乱 。 records模块提高了强大的数据库事务支持 , 通过数据库事务就能避免这种情况 , 如下:


    推荐阅读