zoukankan      html  css  js  c++  java
  • pandas数据保存至Mysql数据库

    pandas数据保存至Mysql数据库 

    import pandas as pd
    from sqlalchemy import create_engine
    host = '127.0.0.1'
    port = 3306
    db = 'test'
    user = 'root'
    password = '********'
    engine = create_engine(str(r'mysql mysqldb://%s:' '%s' '@%s/%s') % (user, password,
    host, db))
    try:
       df = pd.DataFrame([[1,'x'],[2,'y']],columns=list('ab'))
       df.to_sql('test1',con=engine,if_exists='replace',index=False)
    except Exception as e:
       print(e)

    to_sql参数

    参数:
    name : string

    SQL表的名称。

    con : sqlalchemy.engine.Engine或sqlite3.Connection

    使用SQLAlchemy可以使用该库支持的任何数据库。为sqlite3.Connection对象提供了旧版支持。

    schema : string,optional

    指定模式(如果数据库flavor支持此模式)。如果为None,请使用默认架构。

    if_exists : {'fail','replace','append'},默认'fail'

    如果表已存在,如何表现。

    • 失败:引发ValueError。
    • replace:在插入新值之前删除表。
    • append:将新值插入现有表。
    index : bool,默认为True

    将DataFrame索引写为列。使用index_label作为表中的列名。

    index_label : 字符串或序列,默认为None

    索引列的列标签。如果给出None(默认值)且 index为True,则使用索引名称。如果DataFrame使用MultiIndex,则应该给出一个序列。

    chunksize : int,可选

    行将一次批量写入此大小。默认情况下,所有行都将立即写入。

    dtype : dict,可选

    指定列的数据类型。键应该是列名,值应该是SQLAlchemy类型或sqlite3传统模式的字符串。

    方法 : {无,'多',可调用},默认无

    控制使用的SQL插入子句:

    • 无:使用标准SQL INSERT子句(每行一个)。
    • 'multi':在单个INSERT子句中传递多个值
    • 可以签名(pd_table, conn, keys, data_iter)

    可以在插入方法部分中找到详细信息和示例可调用实现

    版本0.24.0中的新功能。

    举:
    ValueError异常

    当表已经存在且if_exists为'fail'时(默认值)。

    参考链接:http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_sql.html

    应用场景

    1建立tcp一次长连接,发送数据端:每隔5s发送一次json数据,接受数据端:接收数据,进行数据处理,存储数据

    server

    import socket
    import pandas as pd
    from sqlalchemy import create_engine
    
    sk = socket.socket()
    
    sk.bind(('127.0.0.1',8000))
    
    sk.listen(2)
    
    con,addr = sk.accept()
    # print(addr,con)
    engine = create_engine('mysql+pymysql://root:@127.0.0.1:3306/db1')
    while True:
        msg = con.recv(8048).decode()
    
        df = pd.read_json(msg,dtype={'code':'str'})
        # 删除parentId列
        df.drop(['parentId'],axis=1,inplace=True)
        # 修改id为cid
        df1 = df.rename(columns={'id':'cid'})
        # print(df1)
        try:
           # df = pd.DataFrame([[1,'x'],[2,'y']],columns=list('ab'))
           df1.to_sql('test1',con=engine,if_exists='append',index=False)
        except Exception as e:
            print(e)

    client

    import socket
    import time
    import re
    import requests
    import json
    import pandas as pd
    
    sk = socket.socket()
    sk.connect(('127.0.0.1',8000))
    url = 'https://www.lagou.com/lbs/getAllCitySearchLabels.json'
    heards = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3452.0 Safari/537.36'
    }
    cont = requests.get(url=url, headers=heards).text
    while True:
        cont1 = re.findall('[.+?]', cont)
        for i in cont1:
            sk.send(i.encode('utf8'))
            time.sleep(5)
  • 相关阅读:
    一个切换鼠标左右手的小工具
    聊一聊高并发高可用那些事
    PHP 笔记
    PHP 安装 XDebug
    php symfony/var-dumper 打印插件
    PHP字符串和数组
    ThinkPHP自定义分页模板
    匿名函数
    SQL优化工具
    spring cloud 服务容错保护
  • 原文地址:https://www.cnblogs.com/benson321/p/10629979.html
Copyright © 2011-2022 走看看