Pandas写入数据到MySQL

#-*- coding:utf-8 -*-

from sqlalchemy import create_engine

class mysql_engine():
    user='******'
    passwd='******'
    host='******'
    port = '******'
    db_name='******'
    engine = create_engine('mysql://{0}:{1}@{2}:{3}/{4}?charset=utf8'.format(user,passwd,host,port,db_name))

def write_data(dataframe):
    pg_enine=mysql_engine()
    try:
        with pg_enine.engine.connect() as con, con.begin():
            pd.io.sql.to_sql(dataframe,'tablename', con, schema='dbname', if_exists='append')  
        con.close()
    except Exception,e:
        print e

注:pd 1.9以后的版本,除了sqllite,均需要通过sqlalchemy来设置

在使用 pandas数据写入 MySQL 数据库时,可能会遇到数据结构被改变的情况。这通常是由于以下原因之一: 1. 数据类型不匹配:pandas 中的数据类型与 MySQL 中的数据类型不匹配,导致写入时发生了数据类型转换。这可能会导致数据结构发生变化。 2. 数据长度超出限制:MySQL 中的某些数据类型有长度限制,如果写入数据长度超出了限制,MySQL 会自动截断数据,导致数据结构发生变化。 为了避免这些问题,可以采取以下措施: 1. 在写入数据之前,检查 pandas 中的数据类型和 MySQL 中的数据类型是否匹配。如果不匹配,可以在写入数据之前进行类型转换。 2. 确保写入数据长度不超过 MySQL数据类型的限制。可以通过设置适当的数据类型和长度来解决这个问题。 例如,可以使用以下代码将 pandas DataFrame 写入 MySQL 数据库: ```python import pandas as pd from sqlalchemy import create_engine engine = create_engine('mysql+pymysql://username:password@host:port/database') df.to_sql('table_name', engine, if_exists='replace') ``` 在写入数据之前,可以使用 `df.dtypes` 查看 pandas DataFrame 中的数据类型,使用 MySQL 的 `DESC table_name` 命令查看表的结构和数据类型。如果需要进行数据类型转换,可以使用 `df.astype()` 方法进行转换。如果需要设置数据类型和长度,可以在 MySQL 中使用 `CREATE TABLE` 命令创建表时指定数据类型和长度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值