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)
  • 相关阅读:
    appdata文件夹有什么用途?C盘appdata可以删除吗?
    白话讲MyIsam和InnoDB的区别
    MVC&&MVP
    计算机程序的思维逻辑- 函数调用的基本原理
    猫狗收养所
    博客学习分类
    Android之操作SQLite
    总结---20160508
    对栈元素排序
    集合栈
  • 原文地址:https://www.cnblogs.com/snackpython/p/10856382.html
Copyright © 2011-2022 走看看