【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)  

猜你喜欢

转载自blog.csdn.net/weixin_47970003/article/details/130570238