sqlalchemy ORM进阶- 批量插入数据
2023-09-27 14:25:18 时间
参考:
https://www.jb51.net/article/49789.htm
https://blog.csdn.net/littlely_ll/article/details/82706874
1 import pandas as pd 2 import sqlalchemy 3 4 df = pd.DataFrame() 5 print(df)
结果:
1 Empty DataFrame 2 Columns: [] 3 Index: []
插入1条数据
import sqlalchemy from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,String,Integer,Float,TIMESTAMP from demo.demogetConnection import GetConnection session = GetConnection.session # engine =GetConnection.engine Base = declarative_base() class User(Base): __tablename__="user" id = Column(Integer,primary_key=True) name = Column(String(45)) def __repr__(self): return "<User(id='%s',name='%s')>"%(self.id,self.name) #插入单条数据: new_user = User(name='lily') #添加数据,但还没有提交,出错还可以使用rollback撤回操作 session.add(new_user) #提交到数据,这一步才是真正的将数据插入到数据库中了 session.commit()
结果
利用pandas批量插入数据
方式一:使用pandas_obj.to_sql()
1 import pandas as pd 2 import sqlalchemy 3 from sqlalchemy.ext.declarative import declarative_base 4 from sqlalchemy import Column,String,Integer,Float,TIMESTAMP 8 9 from demo.demogetConnection import GetConnection 10 11 session = GetConnection.session 12 engine =GetConnection.engine 13 14 Base = declarative_base() 15 class User(Base): 16 __tablename__="user" 17 id = Column(Integer,primary_key=True) 18 name = Column(String(45)) 19 20 def __repr__(self): 21 return "<User(id='%s',name='%s')>"%(self.id,self.name) 22 23 24 25 df = pd.DataFrame({"name":["Jon","Mary","Tom"]}) 26 df.to_sql("user",con=engine,if_exists="append",index=False)
在使用to_sql时注意if_exists参数,如果是replace的话它会先drop掉表,然后再创建表,最后插入数据
结果:
第2种方法,使用for循环
1 import sqlalchemy 2 from sqlalchemy.ext.declarative import declarative_base 3 from sqlalchemy import Column,String,Integer,Float,TIMESTAMP 4 5 from demo.demogetConnection import GetConnection 6 7 session = GetConnection.session 8 engine =GetConnection.engine 9 10 Base = declarative_base() 11 class User(Base): 12 __tablename__="user" 13 id = Column(Integer,primary_key=True) 14 name = Column(String(45)) 15 16 def __repr__(self): 17 return "<User(id='%s',name='%s')>"%(self.id,self.name) 18 19 20 #原生方法,批量插入 21 a=[] 22 for i in range(3): 23 a.append({"name":"曹操%s"%i}) 24 25 print(a) 26 session.execute(User.__table__.insert(),a) 27 session.commit()
打印的a的结果:
[{'name': '曹操0'}, {'name': '曹操1'}, {'name': '曹操2'}]
查询表的结果,已经插入成功了:
相关文章
- Python 实现将文本中数据批量写到Excel
- [ python ] 项目二:主机批量管理程序
- mysql批量更新数据
- mysql动态执行sql批量删除数据
- 转载:mybatis批量更新数据三种方法
- mybaits的xml中写批量更新
- MyBatis 别再乱用 foreach 批量插入了,5000 数据用了 14 分钟,实力劝退。。
- Twaver-HTML5基础学习(20)数据容器(3)_数据的批量加载(节省性能方法)
- Oracle 批量生成sys_guid()
- windows命令行 批量对源代码添加版权头/头信息
- MySQL 下批量清空某个库下的所有表(库不要删除,保留空库)
- Nginx 负载均衡的Cache缓存批量清理的操作记录
- 使用total commander 批量修改thinkphp中的模板文件名,修改total commander的快捷键
- foreach 实现 MyBatis 遍历集合与批量操作数据
- 面试官:1亿条数据批量插入 MySQL,哪种方式最快?
- Java实现批量下载多文件(夹)压缩包(zip)续
- spring成神之路第十八篇:@ComponentScan、@ComponentScans 详解(bean 批量注册)
- Print Conductor批量打印工具,Print Conductor|Crack版
- php thinkadmin自定义一个弹出弹窗批量操作功能
- thinkphp thinkadmin使用phpspreadsheet批量导出excel数据
- Mybatis批量插入数据返回主键
- Oracle之批量生成数据
- java连接mysql批量写入数据
- 多线程查询数据,将结果存入到redis中,最后批量从redis中取数据批量插入数据库中【我】
- 大数据Apache Druid(五):Druid批量数据加载
- 批量任务体现多线程的威力!
- sqlalchemy - 批量删除数据,返回被删除数据的id
- 10万条数据批量插入,到底怎么做才快?