Python实现oracle到MYSQL表数据批量插入

浏览: 2436

原本是想实现SQL SERVER到MYSQL的异库插入,发现SQL SERVER的的连接老出现问题,所以很是郁闷,刚刚本机有oracle自带和MYSQL,索性就使用这两个做一个实验;

代码大部分参考天善最好学的人----王大伟的连接:https://ask.hellobi.com/blog/wangdawei/9367

这部分代码我只是稍微做一下修改;

在oracle库里我生成一个临时emp_bak,数据是为空的

Clipboard Image.png

通过一下脚本实现异库插入

在MYSQL里面的emp表,数据有56条

Clipboard Image.png

接下来我们通过脚本看看结果

代码都有解释,就不多说了,有什么可以留言

# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import MySQLdb
import cx_Oracle
hostname="127.0.0.1"
user="root"
dbname="test"
pas="123"
port=3306
charset = 'utf8'

class MYSQL(object):
def __init__(self):
self.connect()
#定义数据库连接
def connect(self):
try:
self.conn=MySQLdb.connect(
host = hostname,#本地地址
user = user,#一般默认用户名
passwd = pas,#本地数据库登录密码
db = dbname,#数据库名称
port = port,#安装mysql默认的端口号
charset = charset)#设置数据库统一编码
#错误处理
except MySQLdb.Error as e:
print('Error:%s' % e)

def close_conn(self):
try:
if self.conn:
self.conn.close()
except MySQLdb.Error as e:
print('Error:%s' % e)

def Exe_sql(self):
QurySql ="""select * from emp"""
cursor = self.conn.cursor()
cursor.execute(QurySql)
data = cursor.fetchall()
desc=cursor.description
length=len(desc)
col_name = ""
values = ""
print length
#获取字段
for i in range(0, length):
if i != length - 1:
col_name += desc[i][0] + ","
else:
col_name += desc[i][0]
#生成占位符
for i in range(1, length+1):
if i != length :
values +=":"+'%d'%i +","
else:
values += ":"+'%d'%i
insertSql = "insert into emp_bak(" + col_name + ") values(" + values + ")"
#登录ORACLE,并执行oracle插入
Oconn = cx_Oracle.connect("scott/123@127.0.0.1/orcl")
Ocursor = Oconn.cursor()
print insertSql
#在执行插入语句的时候的我们清空一下表,避免语句只加不减
Ocursor.execute("truncate table emp_bak")
for row in data:
Ocursor.execute(insertSql, row)
Oconn.commit()
Ocursor.close()
Oconn.close()
cursor.close()
self.close_conn()
return data,length,desc

def main():
object = MYSQL()
object.Exe_sql()#

if __name__ == '__main__':
main()

接下来看看我们的结果

Clipboard Image.png

很稳,56条,说明数据已经成功插入;

如今秋名山依然在,不见当年老司机,我就是夏尔康

推荐 0
本文由 夏尔康 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册