原本是想实现SQL SERVER到MYSQL的异库插入,发现SQL SERVER的的连接老出现问题,所以很是郁闷,刚刚本机有oracle自带和MYSQL,索性就使用这两个做一个实验;
代码大部分参考天善最好学的人----王大伟的连接:https://ask.hellobi.com/blog/wangdawei/9367
这部分代码我只是稍微做一下修改;
在oracle库里我生成一个临时emp_bak,数据是为空的
通过一下脚本实现异库插入
在MYSQL里面的emp表,数据有56条
接下来我们通过脚本看看结果
代码都有解释,就不多说了,有什么可以留言
# -*- 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()
接下来看看我们的结果
很稳,56条,说明数据已经成功插入;
如今秋名山依然在,不见当年老司机,我就是夏尔康