Heim >Backend-Entwicklung >Python-Tutorial >So lösen Sie das Problem der Verbindung von Python mit Oracle
Entwicklungssprache: Python, Datenbank: Oracle, Drittanbieter-Bibliothek: cx_Oracle (für Python und Oracle (Verbindung), Prettytable (für tabellarische Ausgabe und Anzeige von Daten) 🎜🎜#
Da ich nur die Abfragemethode verwendet habe, habe ich nur überprüft, ohne etwas hinzuzufügen, zu löschen oder zu ändern Ich habe es selbst geändert, um eine Verbindungspoolfunktionalität zu implementieren.pip install cx_Oracle
import cx_Oracle import queue class OracleDatabase: # 构造函数,传入数据库连接参数 def __init__(self, user, pwd, dsn, size): self.user = user self.pwd = pwd self.dsn = dsn ## 定义连接池 self.size = size self.conn_queue = queue.Queue(maxsize=self.size) for i in range(self.size): self.conn_queue.put(self._create_connection()) # 创建数据库连接 def _create_connection(self): return cx_Oracle.connect(self.user, self.pwd, self.dsn) # 从连接池里面获取连接 def _get_conn(self): conn = self.conn_queue.get() if conn is None: self._create_connection() return conn # 将连接put到连接池中 def _put_conn(self, conn): self.conn_queue.put(conn) # 关闭所有连接 def _close_conn(self): try: while True: conn = self.conn_queue.get_nowait() if conn: conn.close() except queue.Empty: print(">>>>数据库连接全部关闭<<<<") pass # 执行查询语句 def query(self, sql, params=None): res = [] conn = self._get_conn() cursor = conn.cursor() try: if params: cursor.execute(sql, params) else: cursor.execute(sql) rows = cursor.fetchall() for row in rows: res.append(row) except Exception as e: print(str(e)) finally: cursor.close() self._put_conn(conn) return res
Prettytable installieren#🎜🎜 ## 🎜🎜#
if __name__ == '__main__': user = "user_dba" pwd = "user_password" dsn = cx_Oracle.makedsn('0.0.0.0', '1521', service_name='s_demo_db') db = OracleDatabase(user, pwd, dsn, 2) cl_code = input("输入订单号: ").strip() print("数据信息展示:") sql_1 = """select * from table_demo c where c.cl_code = :cl_code""" results_1 = db.query(sql_1, [cl_code]) print(results_1) # ......
pip install PrettyTable
Der Verwendungseffekt ist wie folgt: Fügen Sie den ein Bestellnummer und drücken Sie die Eingabetaste, um direkt die folgenden erforderlichen Informationsdaten (Testdaten) zurückzugeben:
Problemaufzeichnung
# 🎜🎜#Lösung: Installieren Sie das Microsoft C++ Build Tool, Microsoft C++ Build Tool – Visual Studio, ändern Sie das Installationsverzeichnis und installieren Sie es gemäß den Standardoptionen.
Lösung: Kopieren Sie den Oracle-Client (siehe Frage 3 für den Client-Download) )-Verzeichnis, fügen Sie die drei DLLs von oci, oraocci11 und oraociei11 in den Ordner Lib/site-packages Ihres Paython-Verzeichnisses ein.
Fehlermeldung
cx_Oracle.DatabaseError: DPI-1072: Die Oracle-Client-Bibliotheksversion wird nicht unterstütztDownload Oracle-Client, entpacken und installieren Sie ihn. Download-Adresse: oracle.github.io/odpi/doc/installation Dieses Problem ist bei mir aufgetreten, weil mein Computer ursprünglich mit Version 19.18 installiert und durch Version 11.2 des Clients ersetzt wurde. Befolgen Sie die Anweisungen in Frage 2, um die drei DLL-Dateien zu installieren . Kopieren Sie es erneut, um das Problem zu lösen.Post-Optimierung
Fügen Sie die SQL-Anweisungen in die Konfigurationsdatei ein und konfigurieren Sie die Tabelle Der Header kann eine kostenlose Erweiterung mehrerer Abfragen realisieren.
Rufen Sie das Bat-Skript auf und führen Sie es aus, um eine Ein-Klick-Abfrage wirklich zu realisieren.
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem der Verbindung von Python mit Oracle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!