pandas向MySql追加数据

感谢lzw2016的文章,解决了困扰一下午的问题

记录一下学习pandas遇到的问题

需要安装pymysql、sqlalchemy
基本语句

from sqlalchemy import create_engine

engine = create_engine("mysql+pymysql://{}:{}@{}/{}?charset={}".format('用户名', '密码', 'localhost:3306', '数据库名','字符集'))
#第二种create_engine('mysql+pymysql://root:123456@localhost:3306/test?charset=utf8')
con = engine.connect()#创建连接
df.to_sql(name='rumousdata', con=con, if_exists='append', index=False)

遇到的问题

学习资料没有提到 engine.connect(),导致追加数据一直出错。
完整示例:

import numpy as np
import pandas as np
from sqlalchemy import create_engine
df = pd.DataFrame([[12345,'Edogawa', 'Conan', '', 'Tokyo']],columns=['PersonID', 'LastName', 'FirstName', 'Address', 'City'])
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test?charset=utf8')

#to_sql的参数if_exists值为append时,必须有此语句。
#参数为replace是,可不写此语句
con = engine.connect()

df.to_sql(name='Persons', con=con, if_exists='append', index=False)
#参数name:表名
# 参数if_exists:
# 1.fail:如果表已经存在,不执行sql
# 2.replace:如果表已经存在,删除表,建立一个新表,将数据插入
# 3.append:如果表存在,将数据插入,如果表不存在创建一个表
#参数index=False:不插入索引index

con.close() #关闭数据库连接
con.closed #查看是否断开

如果你使用IDLE可能会遇到下述问题:
在打开IDLE后使用了pip安装sqlalchemy,插入数据时会遇到AttributeError: 'Engine' object has no attribute 'cursor'错误。
关闭IDLE,重新打开IDLE,输入之前的代码就OK了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值