python版本采用的3.4.10版本所以支持xp
pb局部动态库函数定义
type prototypes
SUBROUTINE PyPB_evalPyScript(string pyscript) library "easypj.dll"
end prototypes
创建一个Python文件testSQLCA.py,代码如下
import pb
def PyPB_SQLCA():
return pb.Obj("sqlca")
def PyPB_Easypj():
return pb.Obj("easypj")
epj = PyPB_Easypj()
SQLCA = PyPB_SQLCA()
SQLCA.DBMS = "MSS Microsoft SQL Server 6.x"
SQLCA.Database = "master"
SQLCA.LogPass = "sa"
SQLCA.ServerName = "server2021"
SQLCA.LogId = "sa"
SQLCA.AutoCommit = False
SQLCA.DBParm = ""
sqlerr = epj.db_connect(SQLCA)
if ''!=sqlerr:
raise Exception(sqlerr)
pb.Obj().MessageBox('','数据库连接成功')
pb项目中调用
PyPB_evalPyScript("import testSQLCA")
实现细节
1 获取全局变量sqlca的方法
POB_DATA pob = ob_get_global_var_data(_obThis, (LPTSTR)"sqlca");
2 获取自定义对象easypj的一个实例
OB_DATA d = { 0 };
OB_CLASS_HNDL och = { 0 };
OB_GROUP_HNDL ogh = { 0 }, rtogh = { 0 };
och = ob_global_reference(_obThis, _T("easypj"), &ogh);
if (och.group_hndl == 0 || ogh == 65535) return NULL;
POB_RUNTIME_INST pri = (POB_RUNTIME_INST)ob_create_obinst(_obThis, och);
ob_set_data_rtinst(&d, pri, och.class_id, 1);
依赖文件目录
easypj.dll、Libjcc.dll、ntwdblib.dll、python.zip、testSQLCA.py
pb8或者pb9自行选择
pbweb80.exe、pbvm80.dll、pbmss80.dll、pbdwe80.dll
pbweb90.exe、pbvm90.dll、pbmss90.dll、pbdwe90.dll
直接测试testSQLCA.py代码的cmd命令
pbweb80.exe -c "import testSQLCA"
本文介绍了一种在PB(PowerBuilder)中集成Python的方法,并通过一个具体的例子——使用Python进行数据库连接操作——来展示如何实现PB与Python之间的交互。文中详细说明了所需的Python版本、动态库函数定义及依赖文件,并提供了完整的Python脚本和PB调用命令。

191

被折叠的 条评论
为什么被折叠?



