1. 功能介绍
Python接口pydb.pyd文件,是C++扩展的python访问数据库的接口
- 在bin目录下,需要具有如下依赖模块,且python程序应该放在bin目录下:
- 安装C++运行时库,VS2013和VS2008
- 依据32位或64位(依pydb.pyd而定)已安装,且系统环境变量path包含了python.exe的路径。如果是eview中使用,则不需要设置python.exe的路径到path中
- bin目下需具有如下依赖库dll:
- pkcomm.dll/pklog.dll/pkce.dll/pkdbapi.dll/pkinifile.dll
- msvcp120.dll/msvcr120.dll
- pydb.pyd
- 如果使用mysql数据库,则:libmysql.dll
- 如果是oracle数据,还需要先安装oracle客户端,并配置数据源
2. 接口
- pydb.InitDB()
对于每个数据库,调用本函数初始化后返回一个数据库实例句柄,在后面使用
参数:无
返回值:对象类型,handle
示例:db1=pydb.InitDB()
- pydb.Connect(dbHandle,dbType,dbConnStr,userName,passWord,codingSet)
连接一个数据库,返回0表示成功,其他值表示失败
参数:
dbHandle,数据库句柄,pydb.InitDB()返回
dbType,数据库类型字符串(支持类型见后面说明)
dbConnStr,数据库连接串(见后面说明)
userName,用户名(见后面说明)
passWord,密码(见后面说明)
codingSet,编码方式,可为空,缺省为空
示例:retcode=pydb.Connect(db1,"sqlite","eview.db","","")
- pydb.ConnectFromConfig(dbHandle,configFileName, dbSectionName)
连接一个数据库
返回值:返回0表示成功,其他表示失败
参数:
dbHandle,数据库句柄,pydb.InitDB()返回
configFileName, config目录下的数据库连接文件名,可为空,为空则表示db.conf
dbSectionName,config目录下数据库连接文件database小节名字,可为空,为空表示database
示例:retcode=pydb.ConnectFromConfig(dbHandle)
- pydb.BeginTransaction(dbHnadle)
执行开始事务的操作
参数:数据库句柄(InitDB返回)
返回值:错误代码(数值型),错误信息(如果错误码不是0,字符串)
示例:retcode,errmsg=pydb.BeginTransaction (db1)
- pydb.CommitTransaction()
执行开始事务的操作
参数:数据库句柄(InitDB返回)
返回值:错误代码(数值型),错误信息(如果错误码不是0,字符串)
示例:retcode,errmsg=pydb.CommitTransaction (db1)
- pydb.RollbackTransaction()
执行开始事务的操作
参数:数据库句柄(InitDB返回)
返回值:错误代码(数值型),错误信息(如果错误码不是0,字符串)
示例:retcode,errmsg=pydb.RollbackTransaction (db1)
- pydb.ExecuteSQL(dbHandle, sql)
执行一次数据库增删改查操作
参数:数据库句柄(InitDB返回),SQL语句
返回值:错误代码(数值型),错误信息(如果错误码不是0,字符串),查询到的数据信息(数组表示,对select查询有效)
示例:retcode,errmsg,rows=pydb.ExecuteSQL(db1,"select * from t_device_list")
- pydb.Disconnect(dbHandle)
不再使用数据库时,断开连接
参数:数据库句柄(InitDB返回)
返回值:错误代码(数值型)
示例:retcode=pydb.Disconnect(db1)
- pydb.ExitDB(dbHandle)
不再使用数据库时,删除数据库对象
参数:数据库句柄(InitDB返回)
返回值:错误代码(数值型)
示例:retcode=pydb. ExitDB(db1)
3. 示例代码
# 注意, 在windows下, pydb.dll 必须改名为:pydb.pyd, linux下则不需要改名 #coding=utf-8 import os import string import sys reload(sys) sys.setdefaultencoding('utf-8') import pydb if __name__ == '__main__': db1=pydb.InitDB() print("NewDB:",db1) #retcode=pydb.ConnectFromConfig(db1) 调用这个或者下面这个方法都可以 retcode=pydb.Connect(db1,"sqlite","eview.db","","") print "connect:",retcode retcode,errmsg=pydb.ExecuteSQL(db1,"select * from t_device_list") print retcode, errmsg retcode=pydb.Disconnect(db1) print "Disconnect:",retcode pydb.ExitDB(db1)
4. 支持的数据库类型
- Mysql
- Oracle
- Sqlite
- DB2
- SQL Server
- PostgreSQL
- ODBC
5. 配置方法
在config/db.conf文件中进行数据库配置。配置文件中以#号开头的行为注释行。示例:
dbtype=mysql
connection=127.0.0.1:3306@eview
username=root
password=root
5.1. Mysql配置
5.1.1. db.conf配置文件内容
dbtype=mysql
connection=127.0.0.1:3306@eview
username=root
password=root
5.1.2. 注意事项
Windows下:
必须在eview/bin目录下具有libmysql.dll。
缺省情况下,eview安装后会自带这个文件。
如果提示冲突而不能访问,需要手动将libmysql.dll(MYSQL安装目录下的libmysql.dll)拷贝到eview安装目录下的bin目录下,且注意libmysql.dll是32为的文件还是64位,需和eview保持一致。
Linux下:需要安装.....
若要进行sql转储,则在编码集中设置适用编码集。
mysql的默认端口是3306,可以编辑用户目录下的my.cnf 文件进行修改。
Connection字符串格式:[<host>[:<port>]@]<database_name>,如:
- 0.0.1@eview
- 0.0.1:3306@eview
- eview
5.2. SQLite配置
5.2.1. db.conf配置文件内容
dbtype=sqlite
5.2.2. 注意事项
不配置数据文件的情况下,使用config/eview.db这个缺省的文件
Sqlite为文件型数据库,有可能会导致写入冲突。此时,请更换呢其他数据库类型。
5.3. SQL Server配置
5.3.1. db.conf配置文件内容
dbtype=sqlserver
connection=192.168.1.103@master
username=sa
password=sa
5.3.2. 注意事项
若要进行sql转储,则在编码集中设置适用编码集
sqlserver默认端口号为:1433
5.4. PostgreSQL配置
5.4.1. db.conf配置文件内容
dbtype=postgresql
connection=127.0.0.1:5432@eview
username=postgres
password=postgres
5.4.2. 注意事项
若要进行sql转储,则在编码集中设置适用编码集
connection 格式:
[<host>[:<port>]@]<database_name>,如:
- 0.0.1@eview
- 0.0.1:5432@eview
- eview
PostgreSQL默认端口号为:5432
安装postgresql后,缺省数据库为:postgres,用户密码也是postgres。
Windows:
eview安装后应该自带这些dll,要确保在eview/bin目录下具有:libpq.dll、libeay32.dll、ssleay32.dll、libintl.dll。
如版本冲突或缺失,可以从PostgreSQL的安装目录的bin下获取这几个文件,并使用Depends工具查看依赖dll是不是只有这几个dll。
Linux:
eview的安装包应该自带libpq.so*文件。
如果安装了postgres服务器,那么在/usr/lib64和/usr/pgsql-9.6/lib/下,应该有以来的libpq.so*文件,如:
/usr/lib64/libpq.so.5
/usr/lib64/libpq.so.5.5
/usr/pgsql-9.6/lib/libpq.so.5
/usr/pgsql-9.6/lib/libpq.so.5.9
如果连接时报错:致命错误: 没有用于主机 "192.168.199.144", 用户 "postgres", 数据库 "postgres", SSL 关闭 的 pg_hba.conf 记录。那么需要在PostgreSQL服务器的安装的data目录下(c:\Program Files (x86)\PostgreSQL\9.3\data\),打开pg_hba.conf,最后面增加一行:
host all all 0.0.0.0/0 md5
不需要重启就可以生效,该问题解决
5.5. Oracle配置
5.5.1. db.conf配置文件内容
dbtype=oracle
connection=orcl
username=system
password=orcl
5.5.2. 注意事项
若要进行sql转储,则在编码集中设置适用编码集
需先在系统中配置Oracle网络服务名,如orcl
oracle 默认端口号为:1521
必须在eview/bin目录下具有oci.dll。系统应该自带,如版本冲突则可以从Oracle的安装目录的bin下获取这个文件,并使用Depends工具查看依赖dll是不是这些。
5.6. DB2配置
5.6.1. db.conf配置文件内容
dbtype=db2
connection=db2alias
username=root
password=root
5.6.2. 注意事项
若要进行sql转储,则在编码集中设置适用编码集
需先使用DB2的控制中心,配置DB2数据库别名。
DB2 默认端口号为:5000
5.7. ODBC配置
5.7.1. db.conf配置文件内容
dbtype=odbc
connection=dsn_name
username=root
password=root
5.7.2. 注意事项
需先在windows的控制面板先完成ODBC源的配置。