【python】写入mysql数据库

在爬虫过程中,想要把爬取后的数据直接写入mysql数据库,经过多次尝试,几次报错,终于总结出一个比较稳定的步骤。
1 安装必要的库
sqlalchemy
pymysql
2 创建数据库引擎

from sqlalchemy import create_engine
engine = create_engine('dialect+driver://username:password@host:port/database')

dialect:数据库类型
driver:数据库驱动选择
username:数据库用户名
password: 用户密码
host:服务器地址
port:端口
database:数据库

更多用法可以参考这篇博文:https://blog.csdn.net/xc_zhou/article/details/118829588
如果是连接的阿里云数据库

username:用户名
password:密码
host:外网地址
port:端口
database:数据库

3 创建表(如果不存在)

from sqlalchemy import MetaData, Table, Column, Integer, String, Text
#使用MetaData创建元数据对象,用于保存表结构。
meta = MetaData()
#定义表结构,使用Table,Column等对象定义表名称、属性、数据类型等信息
table = Table('test', meta,
		Column('col1',Text ),
		Column('col2', Text))
#使用conn.execute()方法执行CreateTable语句创建表
conn = engine.connect()
result = conn.execute(CreateTable(table))

4 将DataFrame的数据插入表
使用pandas的to_sql()方法将DataFrame的数据插入表

import pandas as pd
df = pd.DataFrame(item)
df.to_sql('test', engine, if_exists='append',index=False)   

engine是数据库连接对象
if_exists='append’表示如果表存在则追加数据
index=False表示不要将DataFrame的索引列写入表
5 以上完整代码

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, Text
engine = create_engine('mysql+pymysql://username:password@host:port/database')  #以mysql为例
meta = MetaData()
table = Table('test', meta,
		Column('col1',Text ),
		Column('col2', Text))
conn = engine.connect()
result = conn.execute(CreateTable(table))
df = pd.DataFrame(item)
df.to_sql('test', engine, if_exists='append',index=False)  

6 追加数据

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, Text
engine = create_engine('mysql+pymysql://username:password@host:port/database')  #以mysql为例
df = pd.DataFrame(item)
df.to_sql('test', engine, if_exists='append',index=False)  
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值