文档章节

跨网络,跨数据库查询插入数据

ricardohn
 ricardohn
发布于 2017/02/17 10:55
字数 307
阅读 8
收藏 0

 背景:部署的外网的生产环境由于数据库配置导致部分数据没有插入成功,从内网测试环境查询相关数据插入到生产环境数据库。生产环境数据库只能通过SSH连接进行访问,所以先把需要查询更新的数据导出到文本里面,从内网数据库查询到后再进行插入操作。

#coding=utf-8

import MySQLdb
from sshtunnel import SSHTunnelForwarder 

sql1='select videoType from t_video_type_relevance where videoId IN\
    (select videoId from t_video where videoName=%s)'
SQL2='INSERT INTO t_video_type_relevance_copy(videoType,videoId) values(%s,%d)'

db1 = MySQLdb.connect("192.168.1.246","root","123456","dbname" )
cursor1 = db1.cursor()
cursor1.execute('SET NAMES UTF8') #设置连接编码格式,应对中文问题

data1=[]
data2=[]
with open("c://Users//huangning//Desktop//MISSING.txt",'r') as f:
    lines = f.readlines()
    for line in lines:
        videoId = int(line.split('AB')[0].strip('"'))
        videoName = line.split('AB')[1]
        #print videoId,videoName
        
        
        try:
            cursor1.execute(sql1%videoName)
            result= cursor1.fetchone()[0]
            data = (result,videoId)
            data1.append(data)
        except Exception:
            data2.append(videoId)
            print 'insert not success : %d'%videoId
        
#print data1
#print data2

with SSHTunnelForwarder(('x.x.x.x', 22),    #B机器的配置  
         ssh_password="pwd",  
         ssh_username="username",  
         remote_bind_address=('10.254.0.12', 3306)) as server:  #A机器的配置  
  
        conn = MySQLdb.connect(host='127.0.0.1',              #此处必须是是127.0.0.1  
                           port=server.local_bind_port,  
                           user='username',  
                           passwd='pwd',  
                           db='dbname')
        cursor2 = conn.cursor()
        cursor2.execute('SET NAMES UTF8')
        for item in data1:
            try:
                cursor2.execute(SQL2%item)
                conn.commit()
            except:
                
                conn.rollback()

 

© 著作权归作者所有

共有 人打赏支持
ricardohn
粉丝 1
博文 76
码字总数 30236
作品 0
成都
私信 提问
Sql查询一张表的结果插入另一张表

1、待插入目标表不存在: select * from 目标表 from 表 where 条件 2、待插入目标表已经存在: insert into 目标表 select * from 表 where 条件 3、如果是跨数据库操作的话,将A数据库的a...

Elven_Xu
2016/04/25
105
0
Hypertable 0.9.7.16 发布,分布式数据库

Hypertable 0.9.7.16 发布, 此版本升级到了 C++11 编译器;在 SELECT 指令添加了 NO_CACHE 选项;修复了插入性能方面的问题;修复了 deb 和 RPM 包的安装问题;其他 bug 修复。 Hypertable...

oschina
2014/02/19
888
2
教你用一条SQL搞定跨数据库查询难题

摘要: 数据库拆分后,数据分布到不同的数据库实例,可达到降低数据量,增加实例数的扩容目的。然而前途是美好的,道路是曲折的。一旦涉及拆分,就逃不开“原本在同一数据库里的查询,要变成...

阿里云云栖社区
11/02
0
0
最佳实践 | 教你用一条SQL搞定跨数据库查询难题

导读 日前,某电商用户由于业务发展迅猛,访问量极速增长,导致数据库容量及性能遭遇瓶颈。为降低数据库大小,提升性能,用户决定对架构进行垂直拆分。根据不同的表来进行拆分,对应用程序的...

七幕
10/31
0
0
关于跨DB增量(增、改)同步两张表的数据小技巧

有些场景下,需要隔离不同的DB,彼此DB之间不能互相访问,但实际的业务场景又需要从A DB访问B DB的情形,这时怎么办?我认为有如下常规的三种方案: 1.双方提供RESET API,需要访问不同DB数据...

梦在旅途
08/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
12
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
17
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
23
0
MYSQL索引

索引的作用 索引类似书籍目录,查找数据,先查找目录,定位页码 性能影响 索引能大大减少查询数据时需要扫描的数据量,提高查询速度, 避免排序和使用临时表 将随机I/O变顺序I/O 降低写速度,占用磁...

关元
昨天
12
0
撬动世界的支点——《引爆点》读书笔记2900字优秀范文

撬动世界的支点——《引爆点》读书笔记2900字优秀范文: 作者:挽弓如月。因为加入火种协会的读书活动,最近我连续阅读了两本论述流行的大作,格拉德威尔的《引爆点》和乔纳伯杰的《疯传》。...

原创小博客
昨天
33
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部