python利用 subprocess 批量执行命令 文中以批量sqlacodegen命令为例子

#!/usr/bin/env python
# encoding: utf-8
'''
@author: morgan lions
@time: 8/7/18 11:07 AM
'''

import pymysql.cursors
import subprocess

mysqlDb = {
    'host': '127.0.0.1',
    'port': 3306,
    'user': 'your_mysql_name',
    'password': 'password',
    'charset': 'utf8',
    'db_name': 'db_name'
}

connection = pymysql.connect(host=mysqlDb['host'],
                             user=mysqlDb['user'],
                             password=mysqlDb['password'],
                             db=mysqlDb['db_name'],
                             charset=mysqlDb['charset'],
                             cursorclass=pymysql.cursors.DictCursor)
results = []
try:
    with connection.cursor() as cursor:
        sql = '''SHOW TABLES'''
        cursor.execute(sql)
        result = cursor.fetchall()
        for i in range(len(result)):
            results.append(result[i]['Tables_in_imoocsvr'])
finally:
    connection.close()

string = 'sqlacodegen --tables {table} --outfile ./model/{table}.py mysql+pymysql://{user}:{password}@{host}:{port}/{db_name}?charset={charset}'
for i in results:
    subprocess.call(string.format(table=i, user=mysqlDb['user'], password=mysqlDb['password'], port=mysqlDb['port'],
                                  db_name=mysqlDb['db_name'], charset=mysqlDb['charset']), shell=True)
    print i

猜你喜欢

转载自blog.csdn.net/TianPingXian/article/details/81478503