zoukankan      html  css  js  c++  java
  • 写入数据库

    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="*", user="*", passwd="*", db="*")
        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)
  • 相关阅读:
    别样JAVA学习(六)继承下(2.3)异常下
    Reverse Integer
    Win10易升-在线升级工具
    yum实现仅仅下载不安装包
    redis对key的基本操作
    Win一键查看用户密码
    Linux常用基本命令
    mysql用户管理
    Linux下grub.cnf详解
    图片MassiGra045 简体中文|MG
  • 原文地址:https://www.cnblogs.com/snackpython/p/10856382.html
Copyright © 2011-2022 走看看