python操作数据库插入取出以及绘图

发布时间:2023-07-28 08:30

一、text文件插入到数据库

代码新建库、表、再插入

代码如下:


import pandas as pd
import sqlalchemy as sq
import pymysql
import warnings
warnings.filterwarnings("ignore")  # 利用过滤器来实现忽略告警

DataBaseName='co2' #要创建的数据库
tb_name = 'wlg'  ###要创建的数据表
path = r'E:\test\WLG.txt' # 指定一个站点数据文件
try:
    conn = pymysql.connect(host='localhost',
                           user='root',
                           password='root',
                          ) #db='airstropatm' 这个可以放在前面的括号里面,同时把后面的第二、三行删除即可,就是直接选择数据库,不用创建数据库
    cursor = conn.cursor()
    cursor.execute('CREATE DATABASE  IF NOT EXISTS ' + DataBaseName + ' CHARACTER SET=utf8mb4')
    conn.select_db(DataBaseName)
    print('数据库连接成功!')
except Exception as e:
    print('数据库连接失败!', e)


try:
    sql_createTb = """CREATE TABLE %s""" %tb_name + """(      
                        id mediumint(8) unsigned NOT NULL AUTO_INCREMENT,                  
                        dateYMD date DEFAULT NULL,                                         
                        value float DEFAULT NULL,                        
                        PRIMARY KEY(id));
                        """
    cursor.execute(sql_createTb)
    conn.commit()
    print('创建成功')
except Exception as e:
    conn.rollback()
    print('创建失败', e)
finally:
    cursor.close()
    conn.close()

con = sq.create_engine('mysql+pymysql://root:root@localhost/co2') # 连接mysql数据库

df = pd.read_csv(path, sep='\s+', header=None, skiprows=0, engine='python')# 连接mysql数据库,150是跳过的行号

df['dateYMD'] = df[1].map(str) +'-'+ \
            df[2].map(lambda x: str(x).zfill(2))+'-'+ \
            df[2].map(lambda x: str(x).zfill(2))
              # 上面是数据的第一列至第三列连接成日期。
#print(df['dateYMD'])
#df['dateYMD'] = df[0]  # 数据的第0列 。
df['value'] = df[3]  # 数据的第6列 。
#print(df[3])
dobson_df = df[['dateYMD', 'value' ]]
#print(dobson_df)
dobson_df.drop(dobson_df.loc[dobson_df['value'] < 0].index, inplace=True)  # 删除无效值
dobson_df.to_sql(tb_name, con, if_exists='append', index=False)

最终插入的表格样子

python操作数据库插入取出以及绘图_第1张图片

二、用python链接数据库,并且取指定库的指定表的全部数据,然后自行绘图

代码如下:

import pymysql
import matplotlib.pyplot as plt

def selectSQL():
    # 这里设置的是本地数据库的账户的信息,根据情况来修改参数
     db = pymysql.connect(host="localhost" ,
                         user="root" ,
                         password="1234",
                         db="co2" ,
                         charset='utf8',
                         )
    cursor = db.cursor()
    try:
        # from 后边是要操作的数据表
        sql = "SELECT * FROM wlg"
        cursor.execute(sql)
        data = cursor.fetchall()
        # data里边就是信息,是一个二维列表,print 一下就知道了
        return data
    except :
        print("selsct Error")

    db.close()


def draw(data):
    name_list = []
    data_list = []
    i = 0
    #data的信息是表里边全部的信息,根据需要取即可
    for item in data:
        # item 就是表内一行数据,用下标读取第几列即可,从 0 开始
        name_list.append(item[1])
        data_list.append(item[2])
     
    print(name_list)
    print(data_list)
    
    plt.plot(name_list, data_list,marker='.',color='r')
    plt.title('CO2')
    plt.xlabel('year')
    plt.ylabel('CO2(mg/L)')
    plt.tick_params(direction='in')  # 刻度向里
    plt.show()


def main():
    # 先查出数据,然后再绘图
    draw(selectSQL())


if __name__ == "__main__":
    main()

最终绘图样子:

python操作数据库插入取出以及绘图_第2张图片

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号