文档章节

python对多个数据库执行mysql的source命令

枯藤KT
 枯藤KT
发布于 2015/06/07 22:09
字数 250
阅读 150
收藏 0
#!/usr/bin/env python
import mysql
from mysql import connector
import time
import os
def dowork():
    sql_db=("show databases")
    cursora=conn.cursor()
    cursora.execute(sql_db)
    
    cursorb=conn.cursor()
    dbs=[]
    for db in cursora:
        conn.database=db
        cursorb.execute("show tables")
        for table in cursorb:
            if 'goods_moves' in table:
                dbs.append(db)
    cursora.close()
    cursorb.close()
    return dbs
#把文件中的sql语句存入字典中,然后每个数据库顺序执行
def get_sql():
    fp=file("update.sql",'r')
    sql={}
    count=1
    str_sql=str()
    for line in fp.readlines():
        if line.strip().startswith('/*'):continue
        if line.strip().endswith(";"):
            sql[count]=str_sql+line
            str_sql=''
            count=count+1
        else:
            str_sql=str_sql+line
    fp.close()
    return sql
def modify_table(dbs,sql):
    cursora=conn.cursor()
    for db in dbs:
        conn.database=db
        try:
            for k,v in sql.iteritems():
                cursora.execute(v)
        except Exception:
            bad.append(db[0])
        else:
                print db[0],time.strftime("%k:%M:%S")
        conn.commit()
    cursora.close()
def writeDbToFile(dbs,output):
    dbfile=file(output,'w')
    for db in dbs:
        dbfile.write(db[0]+os.linesep)
        dbfile.flush()
    dbfile.close()
def checkSql(sql):
    for k,v in sql.iteritems():
        print k,v
if __name__ == '__main__':
    config={
        'user':"root",
        'password':'1234456',
        'host':'192.168.10.1',
        'port':13306,
        'buffered':True
    }
    bad=[]
    err=file("error.log",'w')
    conn=mysql.connector.connect(**config)
    dbs=dowork()
    writeDbToFile(dbs,config["host"]+".dbs.txt")
    sql=get_sql()
    #checkSql(sql)
    modify_table(dbs,sql)
    err.write(os.linesep.join(bad))
    err.close()
    conn.close()

© 著作权归作者所有

共有 人打赏支持
枯藤KT

枯藤KT

粉丝 4
博文 98
码字总数 60212
作品 0
昌平
程序员
Mac 之xampp 安装MySQLdb【非Pip安装】

刚学习python,到数据库这块,需要安装一个MySQLdb。记录下碰到的问题~~~ 我的环境:Mac High Sierra 10.13.6 + python 2.7 + XAMPP。 特此说明:以下安装只针对本机以及本人碰到的问题,不一...

干干
09/10
0
0
Mysql-Python 在 Mac osx下的安装

环境配置这个东西很讨厌,但是还必须得配,没办法。这个环境的配置过程也是很多坑,花了一个下午踩坑,由于重启了几次,所以没有截图来记录了。不过还是可以分享一下遇到问题每一步的分析和解...

doctordc
05/14
0
0
python MySQLdb安装和使用

MySQLdb是Python连接MySQL的模块,下面介绍一下源码方式安装MySQLdb: 首先要下载下载:请到官方网站http://sourceforge.net/projects/mysql-python/或者点击链接下载http://downloads.sour...

我的去哈哈
2014/03/28
0
2
使用 python 管理 mysql 开发工具箱 - 1

Mysql 是一个比较优秀的开源的数据库,很多公司都在使用。作为运维人员,经常做着一些重复性的工作,比如创建数据库实例,数据库备份等,完全都可以使用 python 编写一个工具来实现。 一、模...

肖邦0526
2016/12/26
0
0
linux下的 python开发环境

1.安装搜狗 : (1)官网下载搜狗输入法,下载完成后,直接可以在ubuntu软件中心打开 (2)在langage support中install (3)all settings->text entry->input method->show current input source-......

tavenpy
2015/04/13
0
2

没有更多内容

加载失败,请刷新页面

加载更多

设计模式之 明确责任 观察者模式 状态模式 责任链模式

观察者模式是任务分发的一种模式。 如果认为我们设计的系统的各个模块(或子系统)的最终目的是完成共同任务,那么这个任务如何分配到多个模块的就是我们遇到的第一个问题。简单设计场合我们...

backbye
15分钟前
2
0
14-利用思维导图梳理JavaSE-大汇总

14-利用思维导图梳理JavaSE-Java基础知识大汇总 主要内容 1.对象入门 2.一切都是对象 3.程序流程控制 4.初始化和消除 5.权限访问控制 6.复用类 7.多态 8.接口与抽象类 9.内部类 10.容器 11.异...

飞鱼说编程
50分钟前
5
0
利用Lombok编写优雅的spring依赖注入代码,去掉繁人的@Autowired

大家平时使用spring依赖注入,都是怎么写的? @Servicepublic class OrderService { @Autowired private UserService userService;} 是不是很熟悉的感觉?但是呢 如果你用...

HeyS1
57分钟前
25
0
IBATIS 写BLOB字段遇到的问题

1、 首先遇到的配置问题,通过设置typeHandler 来支持写入。接下来由此引出了事务的问题。 <typeHandler jdbcType="BLOB" javaType="[B" callback="org.springframework.orm.ibatis.support....

echo-neo
今天
1
0
37. Sudoku Solver

Description tags: backtrack,hash table difficulty: hard Write a program to solve a Sudoku puzzle by filling the empty cells.A sudoku solution must satisfy all of the following......

52iSilence7
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部