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_2 export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH export NLS_LANG='AMERICAN_AMERICA.AL32UTF8' export TNS_ADMIN=$ORACLE_HOME/network/admin export PATH=$ORACLE_HOME:$PATH
source /etc/profile
python准备部分
通过pip 下载库cx-Oracle
pip install cx-Oracle
插入数据
#coding=utf-8 #!/usr/bin/python3 import pymysql import threading import time import 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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2018-05-08 在fragment中实现Android上传图片至本地JavaWeb服务器