Python3使用Pandas读取MySQL数据并插入的完整示例

Luna
Luna
发布时间:2026-10-13 | 6人浏览过
原创

本文介绍了如何在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数据并插入的完整示例,希望能为读者提供有价值的参考。欢迎大家继续关注本站以获取更多技术支持。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表