SQLAlchemy_dm方言包

5.1 简介及安装

SQLAlchemy 是 python 下的开源软件,提供了 SQL 工具包及对象关系映射(ORM)工具,让应用程序开发人员使用上 SQL 的强大功能和灵活性。sqlalchemy_dm 方言包是 DM 提供用于 SQLAlchemy 连接 DM 数据库的方法。

1.SQLAlchemy 软件的安装。例如:SQLAlchemy-1.1.10.win-amd64-py2.7.exe。

2.sqlalchemy_dm 方言包的软件生成与安装。

sqlalchemy_dm 可以运行在任何安装了 Python 的平台上。生成工具 setup.py 位于 drivers\python\sqlalchemy 目录中。

可以使用如下命令很方便地在 Windows 和 Linux 操作系统下编译并安装 sqlalchemy_dm:

//进入到setup.py所在的源码目录,执行以下命令:

python setup.py install

也可以先生成安装文件再进行安装,不同平台生成安装包的命令如下:

Windows:python setup.py bdist_wininst

Linux:python setup.py bdist_rpm   

生成之后的安装包(例如 sqlalchemy_dm-1.1.10.win-amd64.exe)位于 drivers\python\sqlalchemy\dist 目录中。点击安装包安装即可。

DM 提供的 sqlalchemy_dm 与 SQLAlchemy 的版本对应关系如下表:

表5.1 sqlalchemy_dm版本对应表
sqlalchemy_dm 版本 SQLAlchemy 版本
1.1.10 1.3.x
1.4.39 1.4.x
2.0.0 2.0.x

5.2 engine 的配置

create_engine()返回一个数据库引擎,下面是 DM 数据库的配置方法。

from sqlalchemy import create_engine

engine =
create_engine('dm://SYSDBA:Dmsys_123@localhost:5236/',connect_args={'local_code':1,'connection_timeout':15})

	或

engine =
create_engine('dm+dmPython://SYSDBA:Dmsys_123@localhost:5236/',connect_args={'local_code':1,'connection_timeout':15})

其中,connect_args 是字典选项,只要在 connect_args 中以字典对象的方式配置 dmPython.connect 支持的选项即可。可以包含多个字典对象,用逗号分隔。dmPython.connect 请参考 3.1.1.1 dmPython.connect。其他配置参考 SQLAlchemy 官网 http://docs.sqlalchemy.org 文档。

5.3 类型映射

SQLAlchemy 支持了数据库中使用的大部分类型,根据映射关系,sqlalchemy_dm 方言包支持达梦数据库的下列类型:

BFILE,BIGINT,BINARY,BIT,BLOB,CHAR,CLOB,DATE,DATETIME,DEC,DECIMAL,DOUBLE,DOUBLEPRECISION,FLOAT,INT,INTEGER,INTERVALDAYTOSECOND,LONG,NCLOB,NUMBER,NUMERIC,NVARCHAR2,REAL,SMALLINT,TEXT,TIME,TIMEWITHTIMEZONE,TIMESTAMP,TIMESTAMPWITHTIMEZONE,TINYINT,VARCHAR,VARCHAR2

其中由于 SQLAlchemy 类型支持问题,DECIMAL,DEC 类型在 SQLAlchemy 中均被映射为 NUMERIC 类型,TINYINT 类型被映射为 SMALLINT 类型,CLOB 类型与 LONGVARCHAR 类型被映射为 TEXT 类型 TIME WITH TIME ZONE 类型被映射为 TIME 类型。

5.4 特殊说明

1、SQLAlchemy_dm 当前版本,主键 integer primary_key 不会再自动形成自增列了;

2、只有当 dmPython 版本大于 2.5.9 时才可以正常使用 executemany 返回多行数据集;

3、由于表名标准化问题,克隆或迁移表时,全大写表名将无法识别,请避免使用此类表名;

4、由于语法限制暂不支持使用 bulk_insert_mappings,supports_default_values,supports_empty_insert 等空值插入方法。

微信扫码
分享文档
扫一扫
联系客服