美文网首页Python三期爬虫作业
python导出insert 数据sql脚本

python导出insert 数据sql脚本

作者: chengcxy | 来源:发表于2017-08-09 11:44 被阅读71次

生产环境和测试环境不在一个网段,kettle无法实现跨网段数据导出,而Django ORM框架migrate总会生成一些系统表,公司有规定不能随便建表建库,经过这几天的学习,马马虎虎在我本地搭建了个后台,可以查看每天数据运行情况,目前问题是,生产环境数据每天更新,而我本地报表数据库只有昨天数据,因此本地搭建的后台数据就无法实时更新了,因而用到下面逻辑去解决这个问题,而且构造动态 insert values部分语句 需要将数据转化为字符串 所以我源表所有数据类型都是varchar类型

导出报表数据表的今天数据sql脚本,复制放入到本地文件夹,python脚本读取sql文件,执行sql命令进入本地数据库,实现本地和测试的数据同步

python导出insert 数据sql脚本

#coding:utf-8
import os
import pymysql
import datetime
from datetime import datetime as dt
#获取连接对象

def get_conn():
    conn = pymysql.connect(host='数据库ip', user='用户名', passwd='密码', charset='utf8', db='数据库')
    return conn    

#查询表字段  这个有其他用途
def select_fields(db, table):
    sql = '''
    select column_name from information_schema.columns
    where table_schema = '%s' AND table_name = '%s'
'''
    sql_str = sql % (db, table)
    print sql_str
    conn = get_conn()
    with conn:
        conn.select_db(db)
        cursor = conn.cursor()
        cursor.execute(sql_str)
        fields_tuples = cursor.fetchall()
        fields_list = []
        for i in range(len(fields_tuples)):
            fields_list.append(fields_tuples[i][0])
        field_str = ''
        for field in fields_list:
            data = "'" + field + "',"
            field_str += data
        print(field_str)
        # fields_str=','.join(fields_list)
    return fields_list

#查询今日运行数据
def select_today(db,table_name,create_time):
    conn=get_conn()
    with conn:
        conn.select_db(db)
        cursor = conn.cursor()
        select_sql = 'select * from %s.%s where create_time like "%s%%"' % (db,table_name,create_time)
        print select_sql
        cursor.execute(select_sql)
        data_tuple=cursor.fetchall()
        return data_tuple


if __name__ == '__main__':
    db = 'dbana'
    table = 'rpt_table_increase'
    create_time = dt.now().strftime('%Y-%m-%d')
    #field_list=select_fields(db,table)
    data_tuple = select_today(db,table,create_time)
    with open('dbana_rpt_table_increase.sql','w') as file:
    for data in data_tuple:
        data_list = []
        for i in range(len(data)):
            data_list.append(data[i])
        list2 = ["'"+str(i).decode('utf-8')+"'" for i in data_list]
        print(list2)
        values_str=','.join(list2)
        str_sql = 'insert into dbana_rpt_table_increase values(' + values_str + ');'
        print (str_sql)
        file.write(str_sql)
        file.write('\n')  
sql文件 django后台

相关文章

网友评论

    本文标题:python导出insert 数据sql脚本

    本文链接:https://www.haomeiwen.com/subject/tplihxtx.html