查询Mysql并写入文件

  • 脚本:
# -*- conding:utf-8 -*-
import pymysql
import os
import sys
# 打开数据库连接
db = pymysql.connect("10.33.85.145","root","Uxx_2013")
# 使用 cursor() 方法创建一个游标对象 cursor
runsql = db.cursor()
# 使用 execute()  方法执行 SQL 查询
runsql.execute("select version();")
# 使用 fetchone() 方法获取单条数据.
version = runsql.fetchone()
print("DATABASE VERSION : ",version)
#获取库
runsql.execute("show databases;")
databases = runsql.fetchall()
#初始化seq (用于清空文件历史数据)
seq = 0
for database in databases:
    database = "".join(tuple(database))  #格式化tuple为str
    #获取所有表(查询每个表一条数据,写入文件)
    runsql.execute("use %s;" % database)
    runsql.execute("show tables;")
    tables = runsql.fetchall()
    for table in tables:
        table = "".join(tuple(table))  #格式化tuple为str
        runsql.execute("use %s;" % database)
        try:
            runsql.execute("select count(1) from %s" % table)
        except Exception as ep:
            print("Error Msg" + str(ep))
            continue
        tablecount = runsql.fetchone()
        tablecount = int("".join('%d' % id for id in tablecount))  #格式化tuple为int
        if tablecount > 0:
            runsqlDic = db.cursor(cursor=pymysql.cursors.DictCursor)  #输出数据为字典
            runsqlDic.execute("select * from %s limit 1" % table)
            selectOne = runsqlDic.fetchone()
            #selectOne = list(selectOne)
        else:
            selectOne = '{Null}'
        print("序列: {0:<5} 数据库: {1:<18} 表: {2:<55} 数据量: {3:<5} 抽取数据: {4}".format(seq,database,table,tablecount,selectOne))
        with open("exp.txt",'a+') as fb:
            if seq == 0:
                # os.remove('exp.txt')
                fb.seek(0) #定位到开头
                fb.truncate()  #清空数据
                seq += 1
            else:
                fb.write("序列: {0:<5} 数据库: {1:<18} 表: {2:<55} 数据量: {3:<5} 抽取数据: {4}".format(seq,database,table,tablecount,selectOne) + '\n')
                seq += 1
print("Write is Over !")
# 关闭数据库连接
db.close()
  • 输出:
序列: 1     数据库: information_schema 表: COLLATIONS                                              数据量: 222   抽取数据: {'COLLATION_NAME': 'big5_chinese_ci', 'CHARACTER_SET_NAME': 'big5', 'ID': 1, 'IS_DEFAULT': 'Yes', 'IS_COMPILED': 'Yes', 'SORTLEN': 1}
序列: 2     数据库: information_schema 表: COLLATION_CHARACTER_SET_APPLICABILITY                   数据量: 222   抽取数据: {'COLLATION_NAME': 'big5_chinese_ci', 'CHARACTER_SET_NAME': 'big5'}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值