cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Error while calling procedure from python sqlalchemy

Former Member
0 Likes
1,461

Hi

I am getting an error when i call a stored procedure with table type input and a varchar out param from python using the sqlalchemy lib.Below mentioned is the error

Error while calling procedure from python sqlalchemy.exc.DatabaseError: (pyhdb.exceptions.DatabaseError) invalid argument: Input parameter is inadequate as table parameter:

parameter one is table type in and second is a varchar out

I am adding the code snippet which i am trying with

engine = create_engine("hana+pyhdb://{username}:{password}@{host}:{port}".format(username='username', password='password', host='hostname', port='30015'))
output="
data='[{"RULE_ID":1,"RULE_NAME":null,"SO_SSA":"1074","PO_NUMBER":null,"CODE":"DDD","ROUTE_CODE":"","OPERATING":null,"SHIP_TO":"IND","SHIP_TO_REGION":"MX","SHIP_TO_CUSTOMER_ID":null,"BILL_TO_CUSTOMER_ID":null,"END_TO_CUSTOMER_ID":null,"SLCA":"AKP123","HOLD_NAME":"Futures Approval Hold","SHIPPING_PREFERENCE":null,"EAD":null,"CUSTOMER_REQUEST_TYPE":null,"CRD":null,"CRSD":null,"CURRENT_PROMISE_DATE":null,"CURRENT_PROMISE_DELIVERY_DATE":null,"OPDATE":null,"OPDD":null,"ON_HOLD":null,"FLOW_STATUS_CODE":null,"PICK_RESULT":null,"IS_IN_OTM":null,"BUSINESS_UNIT":null,"REVENUE_FLAG":null,"ACTION_CATEGORY":null,"ACTION_OWNER":null,"SS_REVENUE":null,"CARTONS":null,"INVOICE_ELIGIBILITY_EVENT":null,"SALES_CHANNEL":null,"CREATED_BY":"NEW","CREATION_DATE":"2020-02-11 10:24PM","LAST_UPDATED_BY":"NEW","LAST_UPDATE_DATE":"2020-03-04 10:39PM","FDA_FLAG":null,"POE_FLAG":null,"CONSOLIDATED_FLAG":null,"START_DATE":"2019-01-02","END_DATE":"2020-01-02","ACTIVE":"T"}]'

test=engine.execute('call SCHEMA.PROC(?,?)',(data,output))

Accepted Solutions (0)

Answers (2)

Answers (2)

AndreasForster
Product and Topic Expert
Product and Topic Expert

Hi Arunkumar KP, The hana_ml library can upload a Pandas dataframe into HANA. It creates the table in the necessary format and persists the data. vitaliy.rudnytskiy shows an example in his blog https://blogs.sap.com/2020/03/11/quickly-load-covid-19-data-with-hana_ml-and-see-with-dbeaver/

The create_dataframe_from_pandas function is explained here https://help.sap.com/doc/1d0ebfe5e8dd44d09606814d83308d4b/2.0.04/en-US/hana_ml.dataframe.html#hana_m...

More information on the hana_ml wrapper in the blog by christoph.morgen https://blogs.sap.com/2020/02/24/updates-for-the-data-scientist-building-sap-hana-embedded-machine-l...

Please just verify with your Account Executive, that your HANA license allows this usage.
Many Greetings Andreas

venkateswaran_k
Active Contributor
0 Likes

Dear Arunkumar

Actually the DB procedure a table[] is expected... not the string of data.

So you may have to write something like this

DO BEGIN    

-- select values from table to fill the table
   tabledata = SELECT * from xyz;            
        
    
 test=engine.execute('call SCHEMA.PROC(?,?)',(tabledata,output))
END;