首页 > 数据库 >python mysql 文件数据入库

python mysql 文件数据入库

时间:2023-11-24 19:06:17浏览次数:29  
标签:real power python df conn mysql data 入库

概述

使用python读取数据文件(本文用的csv),处理后批量插入MySQL数据库中,在此做个记录。

程序

import pandas as pd
from datetime import datetime
import pymysql

# GLBS_
real_power_mv_no = 1000001
real_power_file_file_path = './GLBS__DATA.csv'

# mysql
mysql_host = '127.0.0.1'
mysql_port = 3306
mysql_user = 'test_user'
mysql_password = '123456'
mysql_charset = 'utf8'
mysql_db = 'test_db'


# 连接数据库
def connect_mysql():
    conn = pymysql.connect(host=mysql_host, port=mysql_port, user=mysql_user,
                           password=mysql_password, charset=mysql_charset,
                           db=mysql_db)
    cursor = conn.cursor()
    print('connect mysql success: host=' + mysql_host + ', db=' + mysql_db)
    return conn, cursor


# 关闭数据库连接
def close_mysql(conn, cursor):
    cursor.close()
    conn.close()
    print('close mysql connection finished...')


def read_real_power():
    df_data = pd.read_csv(real_power_file_file_path)
    df_data = df_data.set_index(df_data['Time'], drop=False)
    print(df_data[['Time', 'Real Power']].head())
    return df_data[['Time', 'Real Power']]


def insert_real_power_to_mysql(df_real_power, conn, cursor):
    # 先删除数据
    dt_min = df_real_power.index.min()
    dt_max = df_real_power.index.max()
    del_sql = 'delete from MV_HIS_DATA1 where mv_no=' + str(
        real_power_mv_no) + ' and data_time>="' + dt_min + '" and data_time<="' + dt_max + '"'
    cursor.execute(del_sql)
    conn.commit()

    # 拼接数据
    insert_sql_origin = 'insert into MV_HIS_DATA1 values'
    insert_sql = insert_sql_origin
    count = 0
    for idx, data in df_real_power.iterrows():
        insert_sql = insert_sql + '(' + str(real_power_mv_no) + ', "' + idx + '",' + str(
            data['Real Power']) + ',' + str(data['Real Power']) + '),'
        count = count + 1

        # 每5000条,插入1次
        if count % 5000 == 0:
            # 去掉最后一个,
            insert_sql = insert_sql[:-1]

            cursor.execute(insert_sql)
            conn.commit()
            print('insert finished...data_time=' + idx)

            count = 0
            insert_sql = insert_sql_origin

    # 最后提交一次
    insert_sql = insert_sql[:-1]
    cursor.execute(insert_sql)
    conn.commit()
    print('insert data success...real_power_mv_no=' + str(real_power_mv_no))


if __name__ == '__main__':
    # 从文件中读取实际功率
    df_real_power = read_real_power()

    # 连接数据库
    conn, cursor = connect_mysql()

    # 实际功率入库
    insert_real_power_to_mysql(df_real_power, conn, cursor)

    # 关闭数据库连接
    close_mysql(conn, cursor)

标签:real,power,python,df,conn,mysql,data,入库
From: https://blog.51cto.com/weiyuqingcheng/8550864

相关文章

  • Python编写排班工具
    使用Python编写排班小工具:importdatetimedefgenerate_schedule(start_date,end_date,shifts):schedule={}current_date=start_datewhilecurrent_date<=end_date:day_of_week=current_date.strftime("%A")schedule[curre......
  • MySQL_索引
    索引的分类按数据结构:B+树,Hash,Full-text。按物理存储:聚簇(主键),二级(辅助)。字段特性:主键,唯一,普通,前缀。字段个数:单列,联合。按数据结构-B+树索引除此之外还有:Hash,Full-text回表:要查找2个B+树才能找到数据(二级索引-得到主键值-主键索引-得到数据)。覆盖索引:在二级索引的B+树......
  • Python文件锁portalocker模块
    在多进程/多线程的学习后,终于来到了“文件锁”这个概念阶段,文件锁的存在就是由于在多进程/线程操作时会对某个文件进行频繁修改,而导致读取与修改的数据产生不同步。典型场景有以下:进程1对文件A进行写入操作,写入一条记录a,持续时间时20s才能完成这个文件的写入。此时进程2在第......
  • 使用python包os.system执行命令与直接在终端执行命令的区别
     区别:1.使用systemctl命令执行时,即使是以root用户身份执行,也会关注服务的用户组权限。这是因为systemctl在执行服务管理操作时,会检查服务的配置文件中设置的用户和用户组权限,并确保当前用户具有足够的权限来管理服务。2.当你以root用户身份使用os.system执行命令时,它可能会绕......
  • python文字转语音
     pipinstallpygamepipinstallgtts importosimportpygamefromgttsimportgTTStext="你有新的美团外卖订单,请注意查收!"tts=gTTS(text,lang='zh',slow=False,)tts.save("./order.mp3")#os.system("start./order.mp3&quo......
  • python 类直接调用属性和方法
    classMyClass:class_variable="Thisisaclassvariable"@staticmethoddefstatic_method():print("Thisisastaticmethod")@classmethoddefclass_method(cls):print("Thisisaclassmethod......
  • 4.MySQL(数据模型,SQL简介,DDL,DML)
    MySQL(数据模型,SQL简介,DDL,DML)概述:数据库:DataBase(DB),是存储和管理数据的仓库;数据库管理系统:DataBaseManagementSystem(DBMS),操纵和管理数据库的大型软件;SQL:StructuredQueryLanguage,操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准;MySQL是一......
  • 5.MySQL(DQL,多表)
    MySQL(DQL,多表)SQL简介:DQL:DQL(基本查询):语法:查询多个字段:select字段1,字段2,字段3from表名;查询所有字段(通配符):select*from表名;设置别名:select字段1[as别名1],字段2[as别名2]from表名;去除重复记录:selectdistinct字段列表from表名;注意事项:*号代......
  • Mysql基础操作(命令行)
    一、背景docker安装mysql8,映射本地端口3306二、创建数据库createdatabasemyblogcharset=utf8; 三、选择数据库usemyblog;  四、查看所有表showtables;  五、查看表结构descmm_t_user;  showcolumnsfrommm_t_user;  六、向表......
  • (Python)基于对称点模式(Symmetrized Dot Pattern,SDP)的多元、多通道、多传感器信号融合
    对称点模式(SymmetrizedDotPattern,SDP)算法可将复杂时间序列以散点的形式清晰映射在极坐标图中,可以使原始时域信号通过图形化的方式提高可视化能力。因为极坐标图像的特殊性,多元、多通道、多传感器信号信息可通过SDP方法融合在有限区域中。适用于多元、多通道、多传感器信号的融合......