Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie das Problem der Verbindung von Python mit Oracle

So lösen Sie das Problem der Verbindung von Python mit Oracle

王林
王林nach vorne
2023-04-25 10:07:062195Durchsuche

    Technisches Framework

    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

    3. Bestellnummer eingeben und Abfrage ausführen

    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

    4. Formatieren und drucken

    Prettytable installieren#🎜🎜 ## 🎜🎜#

    if __name__ == &#39;__main__&#39;:
        user = "user_dba"
        pwd = "user_password"
        dsn = cx_Oracle.makedsn(&#39;0.0.0.0&#39;, &#39;1521&#39;, service_name=&#39;s_demo_db&#39;)
        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)
    	# ......

    Beispielcode

    pip install PrettyTable

    5. Druckeffekt

    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

    Der erste Das Problem besteht darin, cx_Oracle zu installieren. Es ist ein Fehler aufgetreten:

    FEHLER: Räder für cx_Oracle konnten nicht erstellt werden, was für die Installation von pyproject.toml-basierten Projekten erforderlich ist

    So lösen Sie das Problem der Verbindung von Python mit Oracle# 🎜🎜#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.

    Fehlermeldung

    cx_Oracle.DatabaseError: DPI-1047: Eine 64-Bit-Oracle-Client-Bibliothek kann nicht gefunden werden: „Das angegebene Modul konnte nicht gefunden werden“. Siehe https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html für Hilfe

    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ützt

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

    So lösen Sie das Problem der Verbindung von Python mit Oracle 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!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen