python 查询oracle结果写入文件

import cx_Oracle
import json

# 连接数据库
def connect_to_oracle():
    try:
        # 一般情况会在此处添加oracle的安装路径,避免报错
        cx_Oracle.init_oracle_client(lib_dir=r"E:/xxx/instantclient_11_2_64/")

        # 连接参数
        dsn = cx_Oracle.makedsn(
            host='11.22.33.44',  # 主机名或IP
            port='1521',      # 端口,默认1521
            service_name='xxx'  # 服务名
        )
        
        # 建立连接
        connection = cx_Oracle.connect(
            user='xxx',
            password='xxx',
            dsn=dsn
        )
        
        print("成功连接到Oracle数据库")
        return connection
    except cx_Oracle.DatabaseError as e:
        print(f"数据库连接错误: {e}")
        return None

# 查询并遍历数据
def query_and_iterate_data(connection):
    if not connection:
        print("没有有效的数据库连接")
        return
    
    cursor = None
    try:
        # 创建游标
        cursor = connection.cursor()
        
        # 执行SQL查询
        sql = "SELECT a, b, cFROM xxx WHERE rownum <= 10"  # 示例查询
        cursor.execute(sql)
        
        # 获取列名
        column_names = [col[0] for col in cursor.description]
        print("列名:", column_names)

        results = cursor.fetchall()
        json_data = [dict(zip(column_names, row)) for row in results]
        print(json_data)

        f = open("e://pythontest.txt","w",encoding = "UTF-8")   #打开的txt文件,w为写入模式
        f.write(json_data.__str__().replace("'",'"'))   #将数据写入txt文件
        f.flush()   #刷新缓冲区
        f.close()
            
        # print("\n查询结果:")
        # 遍历结果集
        # for row in cursor:
        #     print(row)
            
    except cx_Oracle.DatabaseError as e:
        print(f"查询错误: {e}")
    finally:
        if cursor:
            cursor.close()

# 主程序
if __name__ == "__main__":
    conn = connect_to_oracle()
    if conn:
        query_and_iterate_data(conn)
        conn.close()  # 关闭连接
        print("数据库连接已关闭")

 

posted @ 2025-04-25 11:41  都是城市惹的祸  阅读(3)  评论(0)    收藏  举报