我被困在最后一個動作中,我需要從我在存盤程序中決議的價格變數中洗掉單個引號
Body_content = message.Body
Body_content = Body_content[:Body_content.find("Regards")].strip()
df = pd.DataFrame([Body_content])
print(df.to_string())
Ticker = df.to_string()[-82:-74]
print(Ticker)
price = df.to_string()[-8:]
print(price)
Date = df.to_string()[-21:-11]
print(Date)
Pkey = 116010910
#print(EMAIL_CONTNT)
con = engine.connect()
date = datetime.datetime.strptime(Date,"%Y-%m-%d").strftime("%d%b%Y")
#print(date)
#tp = "call CORE_VALUATIONS.VALUATIONS.INSERTEQCLOSINGPRICE({,to_date(({Ticker}),'ddmonyyyy'),{price},NULL,NULL);"
con.execute('call CORE_VALUATIONS.VALUATIONS.INSERTEQCLOSINGPRICE(int(%s), %s,float(%s),NULL,NULL)',(Pkey,date,price))

uj5u.com熱心網友回復:
我不太熟悉 Oracle SQL,但是通過資料轉換檔案和這個SO question,將字串轉換為 int 或 float 的方法似乎是隱式或通過TO_*類似TO_NUMBER.
uj5u.com熱心網友回復:
它使用以下 insert(%d, %s, %f, NULL, NULL)' % (int(Pkey), date, float(price)) 解決了
uj5u.com熱心網友回復:
使用callproc()和使用系結變數,見https://cx-oracle.readthedocs.io/en/latest/user_guide/plsql_execution.html
您必須使用系結變數來幫助防止 SQL 注入攻擊。它們還將有助于提高性能和可擴展性。嘗試這樣的事情,內部進行系結:
cursor.callproc('CORE_VALUATIONS.VALUATIONS.INSERTEQCLOSINGPRICE',
[Pkey,date,price])
還可以考慮升級到最新版本的 Python 驅動程式 - 它已從 cx_Oracle 重命名為 python-oracledb,請參閱發布公告
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/488363.html
標籤:Python 熊猫 甲骨文 sqlalchemy CX-甲骨文
上一篇:基于百分比的值累加。Oracle
下一篇:多個洗掉觸發器陳述句不起作用
