文档章节

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

ricardohn
 ricardohn
发布于 2017/02/17 10:55
字数 307
阅读 7
收藏 0
点赞 1
评论 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 ⋅ 0

Hypertable 0.9.7.16 发布,分布式数据库

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

oschina ⋅ 2014/02/19 ⋅ 2

XSS与CSRF(一)

XSS 概念 XSS(Cross Site Scripting)跨站脚本攻击是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种...

hc24 ⋅ 2015/11/06 ⋅ 0

DB Link的使用

在实际的工作中,使用DB link来跨数据来访问, DB link的创建方式 通过TNS来配置 create database link DBLinkName connect to TargetDBName identified by TargetDBPassword using ' (DESC......

保罗的寓言 ⋅ 2011/05/31 ⋅ 0

NoSQL性能测试:MongoDB VS SequoiaDB

作为NoSQL的一个重要类型,文档型NoSQL通常被认为是最接近传统关系型数据库的NoSQL。文档型NoSQL的核心是数据嵌套,这种设计可以从某 种程度上大大简化传统数据库复杂的关联问题。同时由于摆...

SequoiaDB2013 ⋅ 2013/09/15 ⋅ 0

oracle 数据库之间的连接

通过创建database link实现Oracle跨数据库查询的方法 在Oracle本地数据库端执行赋权dbuser帐号 SQL> grant create database link to dbuser; 配置本地数据库服务器的tnsnames.ora文件 $ vi $...

SKYCOBS ⋅ 2016/01/29 ⋅ 0

Hypertable 0.9.6.5 发布,分布式数据库

Hypertable 0.9.6.5 是一个 bugfix 版本。 Hypertable是一个开源、高性能、可伸缩的数据库,它采用与Google的Bigtable相似的模型。在过去数年中,Google为在 PC集群 上运行的可伸缩计算基础设...

oschina ⋅ 2012/10/24 ⋅ 0

分布式数据库--Hypertable

Hypertable是一个开源、高性能、可伸缩的数据库,它采用与Google的Bigtable相似的模型。在过去数年中,Google为在PC集群 上运行的可伸缩计算基础设施设计建造了三个关键部分。第一个关键的基...

匿名 ⋅ 2009/01/21 ⋅ 0

oracle使用dblink跨库查询的例子

本文介绍了oracle数据库使用dblink进行跨库查询的方法,oracle dblink跨库查询教程,需要的朋友参考下。 oracle dblink跨库查询 方法一: 首先,创建数据库链接: 复制代码代码示例: CREATE ...

Carl_ ⋅ 2014/11/07 ⋅ 0

Hypertable 0.9.7.4 发布,分布式数据库

Hypertable 0.9.7.4 提升了 RangeServer 的故障转移处理方面的稳定性,可独立启动和停止 ThriftBrokers。 Hypertable是一个开源、高性能、可伸缩的数据库,它采用与Google的Bigtable相似的模...

oschina ⋅ 2013/04/25 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Cloud构建微服务架构—创建“服务注册中心”

创建一个基础的Spring Boot工程,命名为eureka-server,并在pom.xml中引入需要的依赖内容: <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-par......

itcloud ⋅ 23分钟前 ⋅ 0

拖动

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>event</title> <style> #box { width: 100px; height: 100px; background-color: aquamarine; position: absolute; } </style......

fyliujj ⋅ 25分钟前 ⋅ 0

es6 polyfill array

polyfill之javascript函数的兼容写法——Array篇 1. Array.isArray(obj) if (!Array.isArray) { Array.isArray = function(arg) { return Object.prototype.toString.call(arg) === '[objec......

球球 ⋅ 27分钟前 ⋅ 0

kibana启动异常

检查一下:kibana.yml 每一对key:value中,冒号之后应有空格。

增删改查1 ⋅ 29分钟前 ⋅ 0

js修改img的src属性刷新图片时的图片缓存问题

问题:上传一张图片,通过js更新src属性刷新图片使其即时显示时, 当img的src当前的url与上次地址无变化时(只更改图片,名称不变,不同图片名称相同)图片不变化(仍显示原来的图片) 但通过...

HaierBrother ⋅ 29分钟前 ⋅ 0

Mysql

1.Jdbc Url 设置allowMultiQueries为true和false mysql的批量更新是要我们主动去设置的, 就是在数据库的连接url上设置一下,加上* &allowMultiQueries=true *即可。 参数名称 参数说明 缺省...

瑟青豆 ⋅ 33分钟前 ⋅ 0

mysql导出导入表结构与数据

当我们需要进行数据迁移时,mysql自带的mysqldump会是最好的方式。 1.导出某张表的结构和数据 首先,我们应当使用服务器,打开终端,连接到所需要导出的表所在的服务器上。执行命令: mysqld...

hengbao5 ⋅ 33分钟前 ⋅ 0

世界杯也走向“比拼”大数据的时代

《日本经济新闻》6月19日报道称,俄罗斯足球世界杯已于6月14日揭开战幕。作为第21次举办的足球世界杯,如何活用大数据有可能成为决定各支球队胜负的重要因素。从对阵球队的分析到战术建议,还...

加米谷大数据 ⋅ 33分钟前 ⋅ 0

金额转为千分制,金额转中文大写

金额转关为大写 /** 数字金额大写转换(可以处理整数,小数,负数) */ function digitUppercase(n){ if(!n) reutrn "" let fraction = ['角', '分']; let digit = [...

YXMBetter ⋅ 36分钟前 ⋅ 0

开发利器JRebel部署SpringBoot项目

不要以为年纪轻轻就跌倒了人生谷底,未来还有更大的下降空间等着你。 idea下载和安装JRebel 激活JRebel 访问https://my.jrebel.com/ 使用facebook或twitter登录 勾选 Build project automati...

郑龙飞 ⋅ 42分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部