使用pandas模块把redis或mongodb中的数据转存到mysql中的方法

连接mysql

"""
需要下载 sqlalchemy
pip install sqlalchemy -i https://pypi.douban.com/simple/
"""

from sqlalchemy import create_engine
# 初始化数据库连接,使用pymysql模块
# MySQL的用户:admin, 密码:******, 端口:3306,数据库:test
engine = create_engine('mysql+pymysql://admin:******@192.168.12.**:3306/test')

# read_sql_query的两个参数: sql语句, 数据库连接
sq = pd.read_sql_query('select * from kanyun_logs', engine)
print(sq)
# 新建一个pandas的DataFrame,储存为MySQL的数据表, 不存index列
dt = pd.DataFrame({'id': [1, 2, 3, 4], 'name': ['aa', 'bb', 'cc', 'dd']})
# dt.to_sql('mydf', engine, index=False)

pandas 连接mongodb数据库

import pymongo
cli = pymongo.MongoClient(host='192.168.12.***', port=27017)
# 连接数据库并执行用户认证
db = cli.work
db.authenticate('lagou', '111111')

# 获取表
table = db.wuhan
info = table.find({}, {'_id': 0})
lie = []
for i in info:
    lie.append(i)
    
# 把查出来的数据,转换成DataFrame对象储存到MySQL数据库中
mys = pd.DataFrame(lie)
mys.to_sql('test', engine, index=True)

to_sql()

to_sql参数说明:
(数据,表名,con=连接键,schema='数据库名',if_exists='操作方式')    操作方式有append、fail、replace
append:如果表存在,则将数据添加到这个表的后面
fail:如果表存在就不操作
replace:如果存在表,删了,重建
index: 默认为True,表示把index的索引号添加进去,如果不需要则需要更改为False
因此上面的插入语句可以更改为
mys.to_sql('test', engine, index=True, if_exists='append')
实现再test表中追加写入数据

通过pandas的DataFrame操作实现从mongondb或redis数据库章查询出来的数据进行互相存储

原文地址:https://www.cnblogs.com/tiaowangdeying/p/10542915.html