ORM & SQLAlchemy 入门介绍:

关于 ORMS 的简介

  • SQLAlchemy 是最流行的开源库,用于从 Python 处理关系数据库。
  • 它是一种 ORM 库,又名 对象关系映射 库,它提供了一个接口,用于使用 面向对象的编程 与数据库进行交互。

存在于其他语言中的其他 ORM 库包括:用于 NodeJS 应用程序的  Sequelize 和 javascript 库 Bookshelf.js ,在 Ruby on Rails 中使用 的 ruby​​ 库 ActiveRecord 和 用于在 PHP 上编写的应用程序的 CakePHP ,以及许多其他此类 ORM。

关于 ORM 的注释:它们是“最佳实践”吗?

使用 ORM 与数据库交互只是 众多 有效方法之一,您可以通过这些方法向 Web 应用程序添加额外的抽象层,以便更轻松地与数据库交互。您可以使用其他类型的查询构建器库,它们介于直接与数据库对话(使用像 pyscopg2 这样的数据库驱动程序库)和使用 ORM 之间。ORM 被认为是您可以添加到 Web 应用程序以进行数据库管理的最高抽象级别。Query Builder 库位于中间的某个位置。关于 ORM 是否在所有情况下都是最佳实践方法,有很多不同的意见, 例如一些人认为:“为什么应该避免使用 ORM” .

值得庆幸的是,SQLAlchemy 恰好在数据库驱动程序和 ORM 之间提供了您喜欢的多个抽象级别,因此您可以根据自己的喜好自定义 Web 应用程序的开发。

SQLAlchemy ORM 库

  • 基于 函数的查询构造 :允许通过 Python 函数和表达式构建 SQL 子句。

  • 避免编写原始 SQL 。它生成 SQL 和 Python 代码供您访问表,从而减少与数据库相关的开销,就您需要编写的与模型交互的整体代码量而言。

  • 此外,您 可以避免在每次调用时都向数据库发送 SQL 。SQLAlchemy ORM 库具有 自动缓存 、缓存集合和对象之间的引用,一旦最初加载。

SQLAlchemy 与 psycopg2

  • SQLAlchemy 生成 SQL 语句
  • psycopg2 直接 向数据库 发送 SQL 语句。
  • SQLAlchemy 依赖于 psycopg2或其他数据库驱动程序在后台与数据库通信。

SQLALchemy 允许您遍历所有 3 个抽象层以与您的数据库进行交互。

  • 如果没有 SQLAlchemy,我们只能使用 DBAPI 来建立连接和执行 SQL 语句。简单,但随着复杂性的增加不可扩展。
  • SQLAlchemy 提供了多个抽象层和方便的工具来与数据库交互。
  • SQLAlchemy 可以停留在ORM层面
  • 可以深入数据库操作,在表达式级别运行特定于数据库的自定义 SQL 代码。
  • 可以编写原始 SQL 以在需要时在引擎级别执行。在这种情况下可以更简单地使用psycopg2 

SQLAlchemy 抽象层

  •  Dialect

 Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作,如:

MySQL-Python
    mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>
   
pymysql
    mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]
   
MySQL-Connector
    mysql+mysqlconnector://<user>:<password>@<host>[:<port>]/<dbname>
   
cx_Oracle
    oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...]

 关于中文的处理:

sqlalchemy设置编码字符集一定要在数据库访问的URL上增加charset=utf8,否则数据库的连接就不是utf8的编码格式

eng = create_engine('mysql://root:root@localhost:3306/test2?charset=utf8',echo=True)

  •   Connection Pool 连接池

  • 处理断开的连接
  • 避免对数据库进行非常多的小调用
  • 避免为每次数据更改打开和关闭连接
  • 引擎 the engine

  • 您可以选择如何与数据库交互的 3 个主要层中的第一个。
  • 是与数据库交互的最低层。与使用 psycopg2 非常相似,直接管理连接。
  • SQLAlchemy 中的引擎指的是:它本身、方言和连接池一起工作以与我们的数据库接口。
  • 当我们创建 SQLAlchemy 引擎时,连接池会自动创建。

 表格与类的映射关系:

表格 ——> 类

表记录 ——> 对象

列 ——> 属性

SQLAlchemy备忘录:

利用SQLAlchemy操作db

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值