Python3使用Pandas读取MySQL数据并插入的完整示例
本文介绍了如何在Python3环境中利用Pandas库与pymysql、SQLAlchemy配合,实现从MySQL数据库读取数据并插入新表的操作。内容涵盖数据库连接配置、建表语句、初始数据插入及用户权限授权,提供完整代码示例供参考。
以下是具体的Python实现代码:
# -*- coding:utf-8 -*-
import pandas as pd
import pymysql
import sys
from sqlalchemy import create_engine
def read_mysql_and_insert():
try:
conn = pymysql.connect(host='localhost',user='user1',password='123456',db='test',charset='utf8')
except pymysql.err.OperationalError as e:
print('Error is '+str(e))
sys.exit()
try:
engine = create_engine('mysql+pymysql://user1:123456@localhost:3306/test')
except sqlalchemy.exc.OperationalError as e:
print('Error is '+str(e))
sys.exit()
except sqlalchemy.exc.InternalError as e:
print('Error is '+str(e))
sys.exit()
try:
sql = 'select * from sum_case'
df = pd.read_sql(sql, con=conn)
except pymysql.err.ProgrammingError as e:
print('Error is '+str(e))
sys.exit()
print(df.head())
df.to_sql(name='sum_case_1',con=engine,if_exists='append',index=False)
conn.close()
print('ok')
if __name__ == '__main__':
df = read_mysql_and_insert()
此外,还有几个关键点需要特别注意。
首先,在test数据库中已存在两个表,其建表语句如下所示:
CREATE TABLE `sum_case` ( `type_id` tinyint(2) DEFAULT NULL, `type_name` varchar(5) DEFAULT NULL, KEY `b` (`type_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `sum_case_1` ( `type_id` tinyint(2) DEFAULT NULL, `type_name` varchar(5) DEFAULT NULL, KEY `b` (`type_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
接下来执行初始数据的插入操作
insert into sum_case (type_id,type_name) values (1,'a'),(2,'b'),(3,'c')
其次,创建名为user1的数据库用户
grant select, update,insert on test.* to 'user1'@'localhost' identified by '123456'
以上就是本文关于Python3使用Pandas读取MySQL数据并插入的完整示例,希望能为读者提供有价值的参考。欢迎大家继续关注本站以获取更多技术支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













