文档章节

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

枯藤KT
 枯藤KT
发布于 2015/06/07 22:09
字数 250
阅读 192
收藏 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
博文 101
码字总数 61046
作品 0
昌平
程序员
私信 提问
Mac 之xampp 安装MySQLdb【非Pip安装】

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

干干
09/10
0
0
使用 python 管理 mysql 开发工具箱 - 1

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

肖邦0526
2016/12/26
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之Django基本命令

一、新建项目 注意 project_name 是自己的项目名称,需要为合法的 Python 包名,如不能为 1a 或 a-b。 二、新建APP 要先进入项目目录下,cd project_name 然后执行下面的命令; 一般一个项目...

baishuchao
07/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

windows10小鹤双拼注册表

《安全第一》直接发文本内容,自己建文本,改文本后缀reg。 使用方法: 1.复制下示文本内容,打开你的文本编辑器(#记事本notepad或其他++),粘贴文本内容并保存在任意位置(不影响使用) ...

漫步海边小路
5分钟前
0
0
一、数据挖掘

数据挖掘的发展动力---需要是发明之母 数据爆炸问题 自动数据收集工具和成熟的数据库技术使得大量的数据被收集,存储在数据库、数据仓库或其他信息库中以待分析。我们拥有丰富的数据,但却缺...

凯文加内特
8分钟前
0
0
Java线程池ThreadPoolExecutor

线程池 ThreadPoolExecutor 线程池是ExecutorService的实现,可以通过Executors执行工厂构造不同类型的执行服务(线程池)。 ThreadPoolExecutor线程池使用的是阻塞队列BlockingQueue。 用于...

器石_
9分钟前
0
0
Mybatis 实现SQL拦截并在控制台打印SQL和参数

注:可以拦截sql 执行时间,优化sql。并打印sql 以及参数 第一步:创建类: SqlPrintInterceptor 并实现 Interceptor 该类如下: package com.ra.common.plugin;import org.apache.ibati...

轻量级赤影
12分钟前
1
0
Log4j2 配置

config: <?xml version="1.0" encoding="UTF-8"?><!-- http://logging.apache.org/log4j/2.x/manual/appenders.html --><!-- status 负责打印日记系统的 WARN 级别以及以上的日记 --><C......

Credo-Zhao
12分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部