개발 언어: Python, 데이터베이스: oracle, 타사 라이브러리: cx_Oracle(Python과 Oracle 간 연결용), Prettytable(테이블 형식 출력 표시 데이터용)
pip install cx_Oracle
chatgpt에서 제공하는 코드를 직접 사용합니다. query 방식만 사용했기 때문에 추가, 삭제, 수정 없이 확인만 했습니다. 또한, 질의가 필요한 점을 고려하여 작성했습니다. 여러 데이터를 동시에 직접 수정하여 연결 풀 기능을 구현했습니다.
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
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) # ......
Prettytable 설치
pip install PrettyTable
샘플 코드
from prettytable import PrettyTable ## 接着第三部分的代码 tb_1 = PrettyTable(['**号', '**时间', '当前状态', '单号', '机构']) for rs_1 in results_1: tb_1.add_row([rs_1[0], rs_1[1], rs_1[2], rs_1[3], rs_1[4]]) print(tb_1)
문제 기록
해결 방법: Microsoft C++ Generation Tool, Microsoft C++ Generation Tool-Visual Studio를 설치하고 설치 디렉터리를 변경한 후 기본 옵션에 따라 설치합니다.
오류 메시지
cx_Oracle.Database오류: DPI-1047: 64비트 Oracle 클라이언트 라이브러리를 찾을 수 없습니다: "지정된 모듈을 찾을 수 없습니다". https://cx-oracle.readthedocs.io/en/을 참조하세요. 최신/user_guide/installation.html 도움말해결책: oracle 클라이언트 디렉터리에 있는 oci, oraocci11, oraociei11의 3개 DLL을 복사하고(클라이언트 다운로드는 질문 3 참조) Paython 디렉터리의 Lib/site에 붙여넣습니다. 패키지 폴더 아래에 있습니다.
오류 메시지
cx_Oracle.DatabaseError: DPI-1072: Oracle 클라이언트 라이브러리 버전이 지원되지 않습니다.oracle 클라이언트를 다운로드하고 압축을 풀고 설치하세요. 다운로드 주소: oracle.github.io/odpi/doc/installation 이 문제는 내 컴퓨터가 원래 버전 19.18로 설치되어 클라이언트 버전 11.2로 교체되었기 때문에 발생했습니다. 질문 2의 지침에 따라 세 개의 dll 파일을 설치하세요. . 문제를 해결하려면 다시 복사하세요.
사후 최적화
위 내용은 Python이 Oracle에 연결하는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!