数据库方言(dialect)是什么?

By 刘志军 , 2019-05-27, 分类: qa

db , dialect , sqlalchemy

抛开数据库,生活中的方言是什么?方言就是某个地方的特色语言,是一种区别于其它地方的语言,只有你们这一小块地方能听懂,出了这个地方又是另一种方言。

数据库方言也是如此,MySQL 是一种方言,Oracle 也是一种方言,MSSQL 也是一种方言,他们之间在遵循 SQL 规范的前提下,都有各自的扩展特性。

拿分页来说,MySQL 的分页是用关键字 limit, 而 Oracle 用的是 ROWNUM,MSSQL 可能又是另一种分页方式。

# mysql
select * from t_user limit 10;
# oracle
select * from t_user t where ROWNUM <10;

这对于 ORM 框架来说,为了在上层的ORM层做了无差别调用,比如分页,对使用者来说,不管你底层用的是MySQL还是Oracle,他们用的都是一样的接口,但是底层需要根据你使用的数据库方言不同而调用不同的DBAPI。用户只需要在初始化的时候指定用哪种方言就好,其它的事情ORM框架帮你完成了

layers.png

图片来自:http://aosabook.org/en/sqlalchemy.html


关注公众号「Python之禅」,回复「1024」免费获取Python资源

python之禅

猜你喜欢

2019-12-25
SQLAlchemy 中 flush 与 commit 方法的区别以及用途
2019-11-21
SQLAlchemy or、and、like查询举例
2019-07-23
SQLAlchemy 多对多查询
2019-06-06
SQLAlchemy Connection 事务操作
2019-06-05
SQLAlchemy的Mapping与Declarative
2019-06-01
SQLAlchemy 中的 Engine 是什么?
2019-05-29
SQLAlchemy 查询最大值和最大的记录
2019-05-29
SQLAlchemy 查询指定的列字段
2019-05-29
SQLAlchemy Model 有多个来源于同一个表中的外键如何表示
2019-05-19
运行 SQLAlchemy 报错:Operand should contain 1 column(s) 怎么解决