python3向oracle插入数据

python3.7连接oracle

本文示例使用 oracle-11.2.0.4.0版本

oracle-client准备部分

1.下载oracle client,下载地址

注意:

1.保证与oracle服务器版本统一

2.python3 ,oracle服务器,oracle client统一使用64位或者32位

2.先解压缩instantclient-basic-linux.x64-11.2.0.4.0.zip,后解压缩instantclient-sdk-linux.x64-11.2.0.4.0.zip

3.进入目录instantclient_11_2,创建软链接

ln -s libclntsh.so.11.1  libclntsh.so

4.在刚刚解压得到的instantclient_11_2文件夹下新建network/admin

5.在刚刚创建的目录下创建network/admin创建文件tnsnames.ora,模板如下(SERVICE_NAME请填写服务器SID)

ORCL = (DESCRIPTION =   (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))   (CONNECT_DATA =     (SERVER = DEDICATED)     (SERVICE_NAME = orcl)   ) )

6.修改环境变量(自行更改oracle client解压的路径)

vim /etc/profile

export ORACLE_HOME=/usr/local/instantclient_11_2export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATHexport NLS_LANG=AMERICAN_AMERICA.AL32UTF8export TNS_ADMIN=$ORACLE_HOME/network/adminexport PATH=$ORACLE_HOME:$PATH

source /etc/profile

 

python准备部分

通过pip 下载库cx-Oracle

pip install cx-Oracle

插入数据

#coding=utf-8#!/usr/bin/python3import pymysqlimport threadingimport timeimport cx_Oracle‘‘‘前提:在oracle中设置主键字段自增‘‘‘def try_to_connect_and_insert(): username="test1" userpwd="123" host="127.0.0.1" port=1521 dbname="orcl" insertCount = 0 dsn=cx_Oracle.makedsn(host,port,dbname) try: connection=cx_Oracle.connect(username,userpwd,dsn) connection.autocommit=True sql="insert into TST01(NAME,PRICE,MDATE) VALUES(‘TEST‘,1.0001,to_date(‘20200121‘,‘yyyymmdd‘))" cursor=connection.cursor() for i in range(500000-insertCount): insertCount=i cursor.execute(sql) print(insertCount) cursor.close() connection.close() except Exception as e: print(e) print(insertCount)if __name__ == __main__: for i in range (10): T = threading.Thread(target=try_to_connect_and_insert) T.start() time.sleep(1)

 

运行python脚本,完

 

以下为本人在运行时遇到的问题

=======================================

1.  DPI-1047: 64-bit Oracle Client library cannot be loaded: "libclntsh.so

当我的python版本,oracle版本,Oracle Instant Client版本都一致的情况下,依然报这个错误。需要执行以下命令

sh -c "echo /usr/local/instantclient_11_2 > /etc/ld.so.conf.d/oracle-instantclient.conf"ldconfig

 

相关文章