• python操作oracle数据库


    前言:最近处理迁移数据库事项,oracle导入没什么好的工具导入数据(plsql没mac版),试用下py速度挺好的。仅此记录下

    安装连接oracle的库

    看了下别的数据库,貌似oracle真的麻烦的多..

    import cx_Oracles

     在当前项目使用的venv目录下 teminal, pip install -i https://pypi.douban.com/simple cx_oracle 下载(py3.7+)

    如图即安装成功!

    尝试连接时,报错can not create oracle client,忘截图了。此处会给个提示解决问题的网站。需要安装oracle的即时客户端。

    https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html#installing-cx-oracle-on-macos-intel-x86

    实战示例

    可先查看各个版本是否ok

    import sqlalchemy as sqla
    import pandas as pd
    import cx_Oracle
    
    # Test to see if it will print the version of sqlalchemy
    print(sqla.__version__)    # this returns 1.2.15 for me
    
    # Test to see if the cx_Oracle is recognized
    print(cx_Oracle.version)   # this returns 8.0.1 for me
    
    # This fails for me at this point but will succeed after the solution described below
    cx_Oracle.clientversion()
    import cx_Oracle # 导入库
    
    cx_Oracle.init_oracle_client(lib_dir="/xx/Downloads/instantclient_19_8")# 需要初始化客户端才行
    
    connection = cx_Oracle.connect("username", "password", "ip/dbname") # 建立连接,也可建立连接池,再获取连接
    cursor = connection.cursor() # 获得游标
    
    file_object = open('xx.txt') # 获取文件
    list_all = file_object.readlines() # 获取所有行
    
    for line in list_all: # 遍历执行,这里可以exectemany批量执行
        cursor.execute(line)
    
    connection.commit()
    
    for result in cursor.execute("select count(*) from table"):
        print(result)
    
    cursor.close()
    connection.close()

    exectemany批量执行

    students = [ [10,'萧十一',32], [11,'何十二',40], [12,'穆十三',35] ]

    cur.executemany('insert into table (id, name, age) values (:1, :2, :3)', students)

    connection.commit()

    连接池连接 

    # 创建连接池
    pool = cx_Oracle.SessionPool("username", "password",
            "ip:1521/dbname", min=2, max=5, increment=1, encoding="UTF-8")
    
    # 从连接池中获取一个连接
    connection = pool.acquire()
    
    # 使用连接进行查询
    cursor = connection.cursor()
    for result in cursor.execute("select * from table"):
        print(result)
    
    # 将当前的连接放回连接池
    pool.release(connection)
    
    # 关闭连接池
    pool.close()
    我始终记住:青春是美丽的东西,而且对我来说,它永远是鼓舞的源泉。——(现代)巴金
  • 相关阅读:
    win2008服务器,fastCGI完美设置教程
    IIS7中配置FastCGI运行PHP
    Apple 移动设备绑定动态生成元素点击事件$(document).on('click',element,callback)失效解决方法
    MacOS Catalina 10.15 brew 安装 PHP 和 使用 pecl 安装 Mcrypt
    Redis 列表命令记录
    Redis hash类型命令
    Redis 字符串命令
    Redis 通用命令记录
    Redis 三种启动方式
    Mac 使用 wget 安装 Redis3.0
  • 原文地址:https://www.cnblogs.com/flyinglion/p/15133488.html
Copyright © 2020-2023  润新知