点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
具体来说,我想使用Python和/或JDBC在HANA上创建存储过程。
我尝试执行以下简单的DML查询,例如:
更新SYSTEMDB.UNIVERSITY.STUDENT SET SEMESTERS = 6,其中STUDENT_ID = 1
虽然在从SQL控制台执行上述操作时效果很好,但是从JDBC或Python执行此操作时却收到以下错误:
"功能不受支持:远程数据库对象上不受支持的DML/DDL"
对于定义请求(例如CREATE PROCEDURE),也会发生同样的情况。
这是Python中的一个最小(非)工作示例:
从hdbcli导入dbapi 导入系统 连接= dbapi.connect(" 10.11.1.49",39015," SYSTEM"," MyPassword1") 游标= connection.cursor() 查询=""" 更新SYSTEMDB.UNIVERSITY.STUDENT SET SEMESTERS = 6其中STUDENT_ID = 1 "" cursor.execute(查询) 打印(cursor.fetchone())
用户" SYSTEM"对模式" UNIVERSITY"的特权是" CREATE ANY"。
所允许的查询类型是否有限制? 还是我访问表格的方式有问题?
你好帕特里克
调查 dbapi.py 我发现python客户端(hdbcli)不支持"数据库"参数。
它支持的参数列表如下:
您当然可以立即自己找出租户数据库的端口,但是我建议使用其他方法。
使用hdbuserstore设置连接信息,只需在连接参数中引用用户密钥(在JDBC和hdbcli/Python中都是如此)。 例如,我的用户密钥称为hxedev,它指向HXE数据库:
在Python代码中,我可以编写:
从hdbcli导入dbapi中的使用JDBC,我可以编写:
仅此而已。 源代码中没有登录数据。
希望有帮助(顺便说一句:它也适用于ODBC连接)。
Lars
我没有找到如何更改搜索路径(您是否知道如何指定python脚本应在其中查找 dbapi.py ?),但是将python文件移动到正确的目录中却可以解决:)
我之前尝试过密钥/用户密钥,但是它不起作用。 现在他们两个都在工作。
感谢您的帮助:-)
当您连接到SYSTEMDB并将数据存储在此SYSTEMDB中的模式中时,无需在以下位置提供DBNAME: SQL语句。
因此,只需省略" SYSTEMDB"。 语句中的一点点,代码就可以使用JDBC和Python。
作为一般提示:请勿将SYSTEMDB用于您的应用程序数据。 创建一个租户数据库(即使使用HANA Express Edition,也有一个默认的租户数据库)并连接到该租户数据库。
如果您想更多地了解为什么收到该错误消息,建议您阅读SAP HANA中多个数据库容器背后的概念(请参阅 help.sap.com )。
Lars Breddemann 您知道我是什么吗 在Python调用中做错了吗? JDBC和Python连接在语义上都相等,所以我一无所知。
我需要设置一些其他参数吗?
一周热门 更多>