mac m2 python connect oracle 11g

需要安装驱动

  • basic
  • sdk
  • sqlplus

下载地址

https://www.oracle.com/database/technologies/instant-client/macos-intel-x86-downloads.html

  • 目前并不支持 arm64

    • instantclient-basic-macos.x64-11.2.0.4.0.zip
    • instantclient-sqlplus-macos.x64-11.2.0.4.0.zip
    • instantclient-sdk-macos.x64-11.2.0.4.0.zip
  • 全部加压放到一个目录

  • instantclient-11.2

设置环境变量

  • vim ~/.bash_profile
export ORACLE_HOME=/Users/jimogangdan/instantclient_11_2
export DYLD_LIBRARY_PATH=/Users/jimogangdan/instantclient_11_2
export PKG_CONFIG_PATH=/Users/jimogangdan/instantclient_11_2
export PATH=$ORACLE_HOME:$PATH
export NLS_LANG=.AL32UTF8

pthon 代码

 import cx_Oracle

        import cx_Oracle

if __name__ == '__main__':
    # 连接数据库
    dsn = cx_Oracle.makedsn('xxx', 1521, service_name='xxx')
    connection = cx_Oracle.connect(user='system', password='xxxx', dsn=dsn)
    cursor = connection.cursor()

    # 执行查询
    query = """
    SELECT TO_CHAR(ADDTIME, 'YYYY') AS YEAR, COUNT(*) AS DATA_COUNT 
    FROM COMP_LN.GIM_RENKOU 
    GROUP BY TO_CHAR(ADDTIME, 'YYYY') 
    ORDER BY YEAR
    """
    cursor.execute(query)

    # 获取查询结果
    result = cursor.fetchall()
    result_dict = {row[0]: row[1] for row in result}
    print(result_dict)
    for k,v in result_dict.items():
        print(f'db name: GIM_RENKOU ,year:{k}, total: {v}')

    # 关闭连接
    cursor.close()
    connection.close()

确保环境变量生效

  • sqlplus 提示输入用户名 证明有效
  • echo $DYLD_LIBRARY_PATH

执行脚本

  • 切换为x86_64 : arch -x86_64 zsh
  • 验证: uname -m
  • 执行 :python main.py
posted @ 2023-03-28 16:55  vx_guanchaoguo0  阅读(166)  评论(0编辑  收藏  举报