Is there a way to select schema in python hdbcli dbapi?

1.3k Views Asked by At

According to documentation, parameters needed to connect to HANA database are host, port, user and password.

from hdbcli import dbapi
conn = dbapi.connect(
    address="<hostname>",
    port=3<NN>MM,
    user="<username>",
    password="<password>"
)
cursor = conn.cursor()

This selects username as schema by default. Is there a way to specify schema name?

1

There are 1 best solutions below

0
On BEST ANSWER

AFAIK there is no connection property that would allow setting/switching to a specific schema.

What you can easily do, however, is to switch to your intended schema right after creating the connection:

conn = dbapi.connect(
    address = 'hxehost',
    port = '39013',       # connecting to the HANA system, not the DB directly
    user = '...',
    password = '...',
    databasename = 'HXE', # using the DB name instead of a port number
    #key='USER1UserKey', # address, port, user and password are retreived from the hdbuserstore
    encrypt=True, # must be set to True when connecting to HANA Cloud
    sslValidateCertificate=False # True HC, False for HANA Express.
)

#If no errors, print connected
print('connected')

c1 = conn.cursor()
c1.execute("SET SCHEMA R_C")       # <-- here we set the current schema for the connection
c1.execute("SELECT current_schema FROM DUMMY") # <-- checking the current schema
rows = c1.fetchall();          # <-- [('R_C',)]

This works well for me and I don't see any side-effects besides the additional command to set the schema.