簡體   English   中英

如何使用PyHDB連接到SAP Hana Express

[英]How to connect to SAP Hana Express with PyHDB

我有以下Python代碼[pyhdb]連接到SAP Hana Express:我的代碼是否有錯誤? 還是和SYSTEM用戶有關?

錯誤消息是:在架構APP中找不到表/視圖TABLE:第1行第19行(在pos 18)

import os
import random
import platform
from constant import *
import pyhdb

def is_rpi():
    return 'arm' in platform.uname()[4]

if is_rpi():
    import Adafruit_DHT

def read_dht():
    if is_rpi():
    sensor = Adafruit_DHT.DHT22
    humidity, temperature = Adafruit_DHT.read_retry(sensor, DHT_PIN)

    if humidity is not None and temperature is not None:
        print('Temp={0:0.1f}*C  Humidity={1:0.1f}%'.format(temperature, humidity))
        return int(humidity), int(temperature)
    else:
        return None, None
else:
    return random.randint(20, 30), random.randint(40, 70)

if __name__ == '__main__':

connection = pyhdb.connect(host=SAP_HOST, port=39015, user=SAP_USER, password=SAP_PWD)
cursor = connection.cursor()

temp, humi = read_dht()
query = "INSERT INTO \"{}\".\"{}\" VALUES(\'{}\', {}, {}, \'{}\')".format(
    SAP_SCHEMA, SAP_TABLE, DEVICE_ID, temp, humi, ROOM_NAME)
print("Executing query: "), query
cursor.execute(query)

print("New Row count: "), cursor.rowcount
connection.close()

這是常量代碼:

DHT_PIN = 4
DEVICE_ID = '0ada9de4-bc4f-4e53-990a-cbcfccaed4c4'
ROOM_NAME = 'room 101
SAP_HOST = 'hxehost'
SAP_USER = 'SYSTEM'
SAP_PWD = 'XXXXXXXXXXXX'
SAP_SCHEMA = 'APP'
SAP_TABLE = 'TABLE'

錯誤訊息

在模式APP中找不到表/視圖TABLE

指向該表不存在的事實。 為了檢查該表是否為系統所知,您可以例如運行SQL語句

SELECT * FROM TABLES WHERE SCHEMA_NAME='APP' AND TABLE_NAME='TABLE';

這將導致不存在的表的結果集為空。

在授權問題的情況下,您寧可期待類似的錯誤

特權不足:未經授權

關於檢查授權的問題,您可能需要查看系統視圖EFFECTIVE_PRIVILEGESEFFECTIVE_ROLES GRANTED_PRIVILEGESGRANTED_ROLES (請參閱《 SAP HANA安全指南》)。 通常,特權可以由用戶或角色授予。 角色可以包含其他角色,這可能會使查找授權更加復雜。

但是,在您的特定情況下,您可以嘗試使用相當簡單的SQL查詢:

SELECT * FROM "PUBLIC"."EFFECTIVE_PRIVILEGES" 
WHERE USER_NAME='SYSTEM' AND SCHEMA_NAME='APP' AND PRIVILEGE='INSERT';

(根據您的方案,您可能還需要檢查UPDATE特權。)

請允許我添加一句話,即示例中的INSERT語句可能需要顯式提交才能生效,因為如果我沒有記錯的話,默認情況下,連接設置為autocommit=False

用戶SYSTEM沒有足夠的特權插入表。 解決了謝謝大家。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM