pythonhanapython-db-api

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


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?


Solution

  • 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.