文档章节

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

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

精选30+云产品,助力企业轻松上云!>>>

 背景:部署的外网的生产环境由于数据库配置导致部分数据没有插入成功,从内网测试环境查询相关数据插入到生产环境数据库。生产环境数据库只能通过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
博文 77
码字总数 30567
作品 0
成都
私信 提问
加载中
请先登录后再评论。
改造MySQL实现跨IDC的多主数据库

改造MySQL实现跨IDC的多主数据库 何约什 1、引子 现在的系统大都是7 * 24不间断运行的,对高可用的要求很高。除此之外,系统需要保证不同城市,甚至于不同国家的可用性。 MySQL数据库一般来说...

rootliu
2019/07/16
110
0
Sql查询一张表的结果插入另一张表

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

Elven_Xu
2016/04/25
288
0
数据去中心化的场景与流程

规范化数据模型是传统关系型数据库设计的核心,它为如何管理关系型数据提供了最佳设计理念,但同时也限制了数据查询的灵活性和高效率。 在云计算、大数据等新技术的带动下,越来越多的企业需...

osc_ett4kx6e
2018/08/21
1
0
Vue node.js 前后端数据传递

1、利用Mongoose查询MongoDB 通过mongoose插件可以简捷地从mongodb中获取数据,首先安装mongoose: cnpm install mongoose --save 使用mongoose需要一个模式Schema,它用于定义你从mongodb中...

osc_h9x23mw1
2019/12/07
3
0
安全测试初体验——appscan工具的使用。

一、漏洞扫描的定义 漏洞扫描是对软件系统及网络系统进行与安全相关的检测,找出安全隐患和可被黑客利用的漏洞。 二、appscan工具的安装 链接:https://pan.baidu.com/s/103Z6UAO0pqxFDn9dp5...

菜就菜怎么了
2019/12/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

define()与const - define() vs. const

问题: In PHP, when do you use 在PHP中,何时使用 define('FOO', 1); and when do you use 以及何时使用 const FOO = 1; ? ? What are the main differences between those two? 两者之......

法国红酒甜
41分钟前
26
0
将Node.js升级到最新版本 - Upgrading Node.js to latest version

问题: So, I have Node.js installed and now when I tried to install Mongoosejs I got an error telling me that I don't have the needed version of Node.js (I have v0.4.11 and v0.4......

javail
今天
17
0
等到所有jQuery Ajax请求都完成了吗? - Wait until all jQuery Ajax requests are done?

问题: How do I make a function wait until all jQuery Ajax requests are done inside another function? 我如何让一个函数等到所有jQuery Ajax请求都在另一个函数中完成之后? In short...

富含淀粉
今天
17
0
OSChina 周日乱弹 —— 那么长的绳子,你这是放风筝呢

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @ 巴拉迪维:黑豹乐队的单曲《无地自容》 耳畔突然响起旋律,是那首老歌。中国摇滚有了《一无所有》不再一无所有;中国摇滚有了《无地自容》不...

小小编辑
今天
69
1
《吐血整理》-顶级程序员书单集

你知道的越多,你不知道的越多 给岁月以文明,而不是给文明以岁月 前言 王潇:格局决定了一个人的梦想,梦想反过来决定行为。 那格局是什么呢? 格局是你能够看见的深度、广度和密度。 王潇认...

敖丙
2019/12/11
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部