利用pandas的to_sql将数据插入MySQL数据库和所踩过的坑

更新时间:2023-07-12 19:47:00 阅读: 评论:0

上海蔡元培故居
利⽤pandas的to_sql将数据插⼊MySQL数据库和所踩过的坑
玉米面馒头
前⾔
最近做⼀个Django web的项⽬要把爬取的⼀些数据存⼊MySQL中,数据保存为csv格式,想到pandas中有to_sql这个⽅法,就采⽤它了准备:连接MySQL数据库所需的第三⽅包pymysql、sqlalchemy(pip安装即可)
实现
from sqlalchemy import create_engine
engine = create_engine("mysql+pymysql://{}:{}@{}/{}?chart={}".format('⽤户名','登录密码','127.0.0.1:3306','数据库名','字符编码'))
con = t()#创建连接
<_sql(name='rumousdata', con=con, if_exists='append', index=Fal)
就这么⼏句,但可能遇到不少问题。我先说下create_engine的url格式吧。⽤户名、密码不⽤说,addres
s:port是连接MySQL的ip地址和端⼝号(默认localhost:3306),数据库名是要连接的数据库,字符编码很重要,要插⼊中⽂的话使⽤utf8
香橙慕斯蛋糕香香果to_sql的⼏个参数:
name是表名
青岛供暖con是连接
if_exists:表如果存在怎么处理
append:追加
replace:删除原表,建⽴新表再添加
fail:什么都不⼲
index=Fal:不插⼊索引index
遇到的坑
炖羊肉怎么炖好吃看清楚url的格式,很多⼈到处粘贴,内容是啥都搞不清就⽤。mysql+pymysql://,像这⾥我指明通过pymysql这个包来连接数据库,不是MySqldb,当报错ModuleNotFoundError: No module named 'MySQLdb'找不到MySQLdb这个包时就是这个问题
OperationalError: (OperationalError) (1142, “DROP command denied to ur ‘admin’@‘localhost’ for table ‘rumousdata’”)
樱桃成熟这个是if_exists=‘replace’,删除表时,⽤户admin⽆权限
要么使⽤root⽤户,要么申请权限
IntegrityError: (IntegrityError) (1062, “Duplicate entry ‘1’ for key ‘PRIMARY’”)这个是主键已存在1,不能重复
中⽂插⼊失败
狗狗失声丸
⼀是、没有指定连接的字符编码utf8,通常可见什么latin1什么什么的⽆法插⼊
⼆是、类似(1366, "Incorrect string value: '\xF0\x9F\x92\x9C\' for column 'text' at row,\xF0\x9F\x92\x9C\xF0\x9F,这种原因因为MySQL不识别有些字符的utf8编码(如表情字符),这时你需要指定连接字符编码为utf8mb4。数据表对应字段编码也改成utf8mb4

本文发布于:2023-07-12 19:47:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1078842.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:连接   编码   字符   数据库   存在   格式
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图