- SQLAlchemy 教程
- SQLAlchemy - 主页
- SQLAlchemy - 简介
- SQLAlchemy 核心
- 表达语言
- 连接到数据库
- 创建表
- SQL 表达式
- 执行表达式
- 选择行
- 使用文本 SQL
- 使用别名
- 使用 UPDATE 表达式
- 使用 DELETE 表达式
- 使用多个表
- 使用多个表更新
- 按参数顺序更新
- 多表删除
- 使用连接
- 使用连词
- 使用函数
- 使用集合运算
- SQLAlchemy ORM
- 声明映射
- 创建会话
- 添加对象
- 使用查询
- 更新对象
- 应用过滤器
- 过滤器运算符
- 返回列表和标量
- 文本SQL
- 建立关系
- 使用相关对象
- 使用连接
- 常见关系运算符
- 急切加载
- 删除相关对象
- 多对多关系
- 方言
- SQLAlchemy 有用资源
- SQLAlchemy - 快速指南
- SQLAlchemy - 有用的资源
- SQLAlchemy - 讨论
SQLAlchemy - 方言
SQLAlchemy 使用方言系统与各种类型的数据库进行通信。每个数据库都有相应的 DBAPI 包装器。所有方言都要求安装适当的 DBAPI 驱动程序。
SQLAlchemy API 中包含以下方言 -
- 火鸟
- 微软SQL服务器
- MySQL
- 甲骨文
- PostgreSQL
- SQL
- 赛贝斯
基于 URL 的 Engine 对象由 create_engine() 函数生成。这些 URL 可以包括用户名、密码、主机名和数据库名称。可能有用于附加配置的可选关键字参数。在某些情况下,接受文件路径,而在其他情况下,“数据源名称”替换“主机”和“数据库”部分。数据库 URL 的典型形式如下 -
dialect+driver://username:password@host:port/database
PostgreSQL
PostgreSQL 方言使用psycopg2作为默认 DBAPI。pg8000 也可以作为纯 Python 替代品,如下所示:
# default engine = create_engine('postgresql://scott:tiger@localhost/mydatabase') # psycopg2 engine = create_engine('postgresql+psycopg2://scott:tiger@localhost/mydatabase') # pg8000 engine = create_engine('postgresql+pg8000://scott:tiger@localhost/mydatabase')
MySQL
MySQL 方言使用mysql-python作为默认 DBAPI。有许多可用的 MySQL DBAPI,例如 MySQL-connector-python,如下所示 -
# default engine = create_engine('mysql://scott:tiger@localhost/foo') # mysql-python engine = create_engine('mysql+mysqldb://scott:tiger@localhost/foo') # MySQL-connector-python engine = create_engine('mysql+mysqlconnector://scott:tiger@localhost/foo')
甲骨文
Oracle 方言使用cx_oracle作为默认 DBAPI,如下所示 -
engine = create_engine('oracle://scott:tiger@127.0.0.1:1521/sidname') engine = create_engine('oracle+cx_oracle://scott:tiger@tnsname')
微软SQL服务器
SQL Server 方言使用pyodbc作为默认 DBAPI。pymssql 也可用。
# pyodbc engine = create_engine('mssql+pyodbc://scott:tiger@mydsn') # pymssql engine = create_engine('mssql+pymssql://scott:tiger@hostname:port/dbname')
SQLite
SQLite 连接到基于文件的数据库,默认使用 Python 内置模块sqlite3 。由于 SQLite 连接到本地文件,URL 格式略有不同。URL 的“文件”部分是数据库的文件名。对于相对文件路径,这需要三个斜杠,如下所示 -
engine = create_engine('sqlite:///foo.db')
对于绝对文件路径,三个斜杠后跟绝对路径,如下所示 -
engine = create_engine('sqlite:///C:\\path\\to\\foo.db')
要使用 SQLite:memory:database,请指定一个空 URL,如下所示 -
engine = create_engine('sqlite://')
结论
在本教程的第一部分中,我们学习了如何使用表达式语言来执行 SQL 语句。表达式语言将 SQL 结构嵌入到 Python 代码中。在第二部分中,我们讨论了SQLAlchemy的对象关系映射功能。ORM API 将 SQL 表与 Python 类进行映射。