写入数据库

import pandas as pd
import pymysql
pymysql.install_as_MySQLdb()
from sqlalchemy import create_engine
import time

def replace_into(table_name, table_data):
    """
    通过relace into 方式修改数据
    :param table_name:表名,表中需包含非自增长的主键
    :param table_data:待插入的数据框
    :return:
    """
    conn = pymysql.connect(host="47.110.87.60", user="xiaozhu", passwd="xiaozhu13579", db="douyin")
    cursor = conn.cursor()
    table_data = table_data.reset_index(drop=True)
    columns = [x for x in list(table_data.columns)]
    try:
        for i in table_data.index:
            # 非空的列名
            x_colnames = [k for k in columns if not pd.isnull(table_data.ix[i, k]) | len(str(table_data.ix[i, k])) == 0]
            x_value = [str(table_data.ix[i, k]) for k in columns if not pd.isnull(table_data.ix[i, k]) | len(str(table_data.ix[i, k])) == 0]
            # 拼接值
            sql_values = "','".join(x_value)
            # 拼接列名
            sql_colnames = ",".join(x_colnames)
            # 生成插入sql
            replace_sql = 'replace into %s (%s) values(%s)' % (table_name, sql_colnames, "'" + sql_values + "'")
            cursor.execute(replace_sql)
            conn.commit()
    except Exception as e:
        logging.exception(e)
    finally:
        conn.rollback()
        cursor.close()
        conn.close()
def write():
    conn1 = create_engine('mysql+mysqldb://dbuser***@***:30003/***?charset=utf8mb4')
    sql ='    SELECT sum(a.num) as num , b.receiver_city, b.receiver_area,d.name,b.shop_id,c.shop_name FROM sales_trade_order a  JOIN api_trade b ON a.src_tid = b.tid join sys_shop c on b.shop_id=c.shop_id left join dict_city d  on  b.receiver_city=d.city_id WHERE b.pay_time >=curdate() group by receiver_city '
    qq = pd.read_sql_query(sql, conn1)
    replace_into('地区销量', qq)
    print('11')
if __name__ == '__main__':
    while 1 :
        write()
        time.sleep(120)

猜你喜欢

转载自www.cnblogs.com/snackpython/p/10856382.html