我正在嘗試為 oracle 連接創建一個函式,該函式將采用下面代碼中提到的引數,但似乎有些問題......
誰能幫助了解如何糾正它以及我在這里缺少什么?
import cx_Oracle
def sqlconnect(user,passwd,SID, query):
connStr = cx_Oracle.connect('user/passwd@SID')
cursor = connStr.cursor()
cursor.execute(query)
return cursor.fetchall()
if __name__ == '__main__':
sqlconnect('user','password','XEE','select * from dual')
提前致謝!
uj5u.com熱心網友回復:
該字串user/passwd@SID不是有效的連接字串。除非XEE是 tnsnames.ora 條目,否則您需要在連接字串中參考主機和服務名稱。你可能想要這樣的東西,而不是:
def sqlconnect(user, passwd, dsn, query):
conn = cx_Oracle.connect(user=user, password=passwd, dsn=dsn)
cursor = conn.cursor()
cursor.execute(query)
return cursor.fetchall()
if __name__ == '__main__':
host = "my_host_name"
service_name = "XEE"
conn_string = f"{host}/{service_name}"
sqlconnect("user", "password", conn_string, "select * from dual")
uj5u.com熱心網友回復:
您可以參考下面的鏈接,它可以幫助您了解 Python 如何連接到 Oracle db,并且您缺少 TNS 條目或完整的服務 JDBC URL,下面是一些示例:
https://www.oracle.com/database/technologies/appdev/python/quickstartpythononprem.html
https://oracle.github.io/python-cx_Oracle/samples/tutorial/Python-and-Oracle-Database-Scripting-for-the-Future.html
uj5u.com熱心網友回復:
我認為還有另一種使用方法f-strings:
import cx_Oracle
def sqlconnect(user,passwd,dsn, query):
connStr = cx_Oracle.connect(f'{user}/{passwd}@{dsn}')
cursor = connStr.cursor()
cursor.execute(f'{query}')
return cursor.fetchall()
if __name__ == '__main__':
sqlconnect('user','password','localhost/SID','select * from dual')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/417573.html
標籤:
上一篇:如何在歷史表sql中找到更改的值
