文档章节

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

枯藤KT
 枯藤KT
发布于 2015/06/07 22:09
字数 250
阅读 108
收藏 0
点赞 0
评论 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
博文 71
码字总数 60123
作品 0
昌平
程序员
Mysql-Python 在 Mac osx下的安装

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

doctordc ⋅ 05/14 ⋅ 0

Python安装MySQL库详解(解决Microsoft Visual C++ 9.0 is required )

前面我们介绍的Python网络爬虫通常将抓取的数据存储至TXT或CSV文件,而当数据量增加之时,就需要将其存储至本地数据库了。Python访问数据库需要对应的接口程序,我们可以把接口程序理解为Pyt...

eastmount ⋅ 04/25 ⋅ 0

Peewee 3.2.5 发布,轻量级 Python ORM 库

Peewee 3.2.5 已发布,Peewee 是一个轻量级的 python ORM 库,内置对 SQLite、MySQL 和 PostgreSQL 的支持。支持 Python 2.7+ 和 Python 3.4+。 更新内容: 新增 ,示例如下: data = [(1, ...

王练 ⋅ 04/23 ⋅ 0

报错EnvironmentError: mysql_config not found

MySQL for Python library在Python中也就相当于JAVA中对应MySQL的JDBC Driver 1. 首先安装mysql sudo apt-get install mysql-server 2. 安装mysql-python 下载MySQL-python-1.2.3.tar.gz(见......

jalyzjs ⋅ 05/12 ⋅ 0

Ubuntu部署python3-flask-nginx-uwsgi-supervisor完美

http://blog.51cto.com/jokerbug by:joker_bug 安装虚拟环境 把虚拟机环境添加环境变量中 为flask项目创建一个虚拟环境 安装mysql数据库,安装数据这个没什么好提的网上有很多详细教程 安装n...

joker_bug ⋅ 2017/12/28 ⋅ 0

window 安装 pymysql

window 安装 pymysql 一、下载安装python-win 点击打开链接 二、下载安装setuptools 点击打开链接 三、下载安装 mysql 点击打开链接 四、安装pymysql 在python中执行python ez_setup.py文件,...

推荐码发放 ⋅ 05/07 ⋅ 0

django项目中使用多个数据库的方法, 多个数据库的联用 以及多数据库时数据导入导出的方法

阅读目录 给每个app都可以单独的设置一个数据库 使用指定的数据库来执行操作 多个数据库连用时数据导入导出 正文内容 django项目中使用多个数据库的方法, 多个数据库的联用 以及多数据库时数...

鹅倌 ⋅ 04/16 ⋅ 0

Python Scrapy 爬虫(一):环境搭建

  三年前的一天,我在灵隐寺求佛时,偶遇一高僧,法号智息。大师见我眉头紧皱,心事重重,于是便主动上前来开导我。大师充满智慧地告诉我了一句真理:“人生苦短,及时行乐。”   在大师...

雨林_a1d6 ⋅ 05/24 ⋅ 0

python3 django配置数据库(mysql)

python3 django配置数据库(mysql) python3 下的mysql驱动 django 连接mysql默认驱动是MySQLdb,MySQLdb没有支持python3的版本,如果使用python3.x版本时,django连接mysql的方法 1、使用p...

代金券优惠 ⋅ 04/24 ⋅ 0

python2安装MySQLdb(windows同时装有python2和3)

命令行: py -2 -m pip install --upgrade pip #更新pip py -2 -m pip install MySQL-Python 然后发现出错, 按照提示进入 http://aka.ms/vcpython27 网站,下载 VCForPython27.msi 进行安装......

白又白呀 ⋅ 05/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何使用serverchan微信推送告警

之前实现推送告警信息到微信的方法有如下几种: 1、通过企业公众号实现----收费: 2、通过QQ邮箱,在微信平台上开启收到邮件进行提醒; 3、第三方告警平台API,一般也是收费的; 不过最近看文...

问题终结者 ⋅ 5分钟前 ⋅ 0

TCP的RPC

RPC就是远程方法调用(Remote Process Call ),包含了客户端和服务端,涉及了对象的序列化传输。 1.服务端启动,注册远程调用的类2.客户端发送请求信息包含类、方法、参数的一些信息、序列化传...

Cobbage ⋅ 25分钟前 ⋅ 0

IOS-UI UI初步代码布局添加事件

ISO开发界面,UI是必须学习的一部分,其实很早之前想学来了,一直没有沉下心来学习。看到IOS的代码风格和布局就别扭的不行,跟java代码和android布局比较显得不是那么方便,所以一直到现在。...

京一 ⋅ 36分钟前 ⋅ 0

浅谈OpenDaylight的二次开发

OpenDaylight作为一款开源SDN网络控制器,依托于强大的社区支持以及功能特性,成为了目前主流的SDN网络控制器开发平台。在比较稳定的OpenDaylight Helium版本中,已经为开发者提供了大量的网...

wangxuwei ⋅ 45分钟前 ⋅ 0

API 开发中可选择传递 token 接口遇到的一个坑

在做 API 开发时,不可避免会涉及到登录验证,我使用的是jwt-auth 在登录中会经常遇到一个token过期的问题,在config/jwt.php默认设置中,这个过期时间是一个小时,不过为了安全也可以设置更...

等月人 ⋅ 45分钟前 ⋅ 0

Java NIO之文件处理

程序要操作本地操作系统的一个文件,可以分为以下三个部分: 对文件位置的操作 对文件的操作 对文件内容的操作 其中,对文件内容的操作在 Java NIO之Channel 中已经有了介绍,通过FileChann...

士别三日 ⋅ 50分钟前 ⋅ 0

Maven的pom.xml配置文件详解

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.......

小海bug ⋅ 今天 ⋅ 0

解决httpclient超时设置不生效的问题

最近公司有项目需要通过http调用第三方服务,且第三方服务偶有超时,故需要设置一定的超时时间防止不响应的情况出现。 初始设置如下: [java] view plain copy //超时设置 RequestConfig re...

Mr_Tea伯奕 ⋅ 今天 ⋅ 0

过滤器Filter和拦截器HandlerInterceptor

过滤器 依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要...

hutaishi ⋅ 今天 ⋅ 0

Redis入门详解(转)

Redis入门详解 Redis简介 Redis安装 Redis配置 Redis数据类型 Redis功能 持久化 主从复制 事务支持 发布订阅 管道 虚拟内存 Redis性能 Redis部署 Redis应用场景 Redis总结 Redis简介: Redi...

xiaoyaoyoufang ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部