Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >sqlalchemy批量插入的坑

sqlalchemy批量插入的坑

作者头像
零式的天空
发布于 2022-03-22 04:42:45
发布于 2022-03-22 04:42:45
1.6K00
代码可运行
举报
文章被收录于专栏:零域Blog零域Blog
运行总次数:0
代码可运行

默认提供的bulk_save_objects是在一次事务中提交多次save

需求:一个sql语句插入多个实体 直接上代码

models.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sqlalchemy import (Column, String, DateTime, UnicodeText, BigInteger, Boolean, Integer, Text, Float)
from sqlalchemy import TypeDecorator
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
class People(Base):
    """
    people类
    """
    __tablename__ = 'people'

    id = Column(Integer, primary_key=True, unique=True, index=True, autoincrement=False)
    name = Column(String(100))
    age = Column(Integer, default=0)
    add_time = Column(DateTime, default=datetime.now, nullable=False)

#注意 sqlalchemy字段默认可以为空,和django model相反

views.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
value_list = []
dict_list = []

people1 = People()
people2 = People()

value_list.append(people1)
value_list.append(people2)

for item in value_list:
    item_dict = item.__dict__
    if "_sa_instance_state" in item_dict:
        del item_dict["_sa_instance_state"]
        dict_list.append(item_dict)


engine = create_engine('mssql+pymssql://user:password@127.0.0.1:1433/data')
DBSession = sessionmaker(bind=engine)
session = TWDBSession()
session.execute(timeline.__table__.insert(dict_list))
session.commit()


这里有个巨大的坑,如果people中任何一个实体没有某个字段,则即使其他实体有该字段也无法将该值插入到数据库中, 如下代码:

people1 = People()

people1.name = "bobby1"

people2 = People()

people2.name = "bobby1"
people2.age = 3

#注意people1没有设置age字段, 则在批量插入的时候, people1和people2都在数据库中都没有age字段。
解决办法:  
    加上people1.age = None

具体原因还没有看源码,以后有时间再研究

最后欢迎大家观看我关于 django + xadmin的教程:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://coding.imooc.com/class/evaluation/78.html
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python 使用SQLAlchemy数据库模块
SQLAlchemy 是用Python编程语言开发的一个开源项目,它提供了SQL工具包和ORM对象关系映射工具,使用MIT许可证发行,SQLAlchemy 提供高效和高性能的数据库访问,实现了完整的企业级持久模型。
王瑞MVP
2023/11/24
4970
SQLAlchemy总结+
Review: 一、Mysql 操作 创建一个test库 create database test; 授权一个用户 grant all privileges on *.* to 'asd'@'%' identified by 'awerfsdf123'; 创建表 create table student(id int not null); 查询 select * from tabel_name where 条件1 and 条件2 增加 insert into table_name (id, name
老七Linux
2018/05/31
2.3K0
python的SQLAlchemy简单使用
SQLAlchemy应用了ORM技术(Object-Relational Mapping),它能把关系数据库的表结构映射到对象上。
灯珑LoGin
2022/10/31
4810
Python ORM - pymysql&sqlalchemy
Python3主要是面向对象的编码风格,访问数据库也可以使用ORM框架来实现面向对象,本文介绍pymysql和sqlalchemy 安装组件 pip3 install pymysql pip3 install sqlalchemy 定义数据对象 user表结构 CREATE TABLE `user` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(64) NOT NULL, `age` int DEFAULT NULL, `del
十毛
2021/01/21
7500
Python 之 sqlalchemy更
表结构: 代码: #Author Kang import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.de
py3study
2020/01/07
3300
Python 之 sqlalchemy删
表结构: 代码: #Author Kang import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.de
py3study
2020/01/10
4630
Python 之 sqlalchemy查
Filter: 可以像写 sql 的 where 条件那样写 > < 等条件,但引用列名时,需要通过 类名.属性名 的方式。 filter_by: 可以使用 python 的正常参数传递方法传递条件,指定列名时,不需要额外指定类名。,参数名对应名类中的属性名,但似乎不能使用 > < 等条件。 当使用filter的时候条件之间是使用“==",fitler_by使用的是"="。
py3study
2020/01/09
6220
Python 之 sqlalchemy查
大数据ETL实践探索(9)---- postgresSQL 数据入库使用pandas sqlalchemy 以及多进程
最近有个需求,需要将200W 左右的 excel 格式数据录入 postgreSQL 数据库。 我想了几种办法:
流川疯
2020/06/16
1.5K0
使用Python操作MySQL和Oracle数据库
前面两篇文章已经说过将数据存储到SQLite和本地文件中,如果还没有来得及看,可点击如下快速链接:
JiekeXu之路
2019/08/15
2.9K0
SQLAlchemy SQLAlchemy
SQLAlchemy 1.1.SQLAlchemy介绍 SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果。 安装 pip install sqlalchemy 组成部分 Engine,框架的引擎 Connection Pooling ,数据库连接池 Dialect,选择连接数据库的DB API种类 Schema/Types,架构和类型 SQL Exprr
zhang_derek
2018/05/30
2.3K0
Python SQLAlchemy入门教程
本文将以Mysql举例,介绍sqlalchemy的基本用法。其中,Python版本为2.7,sqlalchemy版本为1.1.6。
oYabea
2020/09/07
3.3K0
Flask-SQLAlchemy
一.SQLAlchemy介绍 SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果。 1 pip3 install sqlalchemy 组成部分: Engine,框架的引擎 Connection Pooling ,数据库连接池 Dialect,选择连接数据库的DB API种类 Schema/Types,架构和类型 SQL Ex
用户1214487
2018/01/24
5.5K0
Flask-SQLAlchemy
SQLAlchemy
SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果。
小小咸鱼YwY
2020/06/19
3.3K0
SqlAlchemy 2.0 中文文档(七十七)
本文档描述了 SQLAlchemy 版本 0.8 与版本 0.9 之间的变化,截至 2013 年 5 月,0.8 版本正在进行维护,而 0.9 版本在 2013 年 12 月 30 日首次发布。
ApacheCN_飞龙
2024/08/26
1800
两分钟了解Python之SQLAlchemy框架的使用
您好,我是码农飞哥,感谢您阅读本文!本文将主要介绍一款应用于Python语言中的ORM框架SQLAlchemy。ORM的是Object-Relational Mapping,作用是把关系数据库的表结构映射到对象上。
码农飞哥
2021/08/18
1K0
Flask框架(五)之SQLAlchemy
SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果。
GH
2020/03/19
3K0
python学习笔记SQLAlchemy
ORM 全称 Object Relational Mapping, 翻译过来叫对象关系映射。简单的说,ORM 将数据库中的表与面向对象语言中的类建立了一种对应关系。这样,我们要操作数据库,数据库中的表或者表中的一条记录就可以直接通过操作类或者类实例来完成。
py3study
2020/01/09
3.2K0
SQLAlchemy学习-6.Column 设置字段一些参数配置
前言 Column 对应表里面的每个字段 Column常用参数 第一个参数传数据类型,sqlalchemy常用数据类型: 参数 类型 String 字符类型,使用时需要指定长度,区别于Text类型 Text 文本类型 LONGTEXT 长文本类型 Integer 整形 Float 浮点类型 Boolean 传递True/False Decimal 具有小数点而且数值确定的数值 Enum 枚举类型 DateTime 日期时间类型 Date 传递datetime.date()进去 Time 传递datatime
上海-悠悠
2022/07/19
3.5K0
SQLAlchemy学习-6.Column 设置字段一些参数配置
如何使用 Python 和 SQLAlchemy 结合外键映射来获取其他表中的数据
在使用 Python 和 SQLAlchemy 时,结合外键映射可以让你在查询时轻松地获取其他表中的数据。SQLAlchemy 提供了丰富的 ORM(对象关系映射)功能,可以让你通过定义外键关系来查询并获取关联的数据。下面我会演示如何设置外键关系,并通过 SQLAlchemy 查询获取其他表中的数据。
华科云商小徐
2025/02/05
3300
Python 进阶(四):数据库操作之 MySQL
MySQL 是目前使用最广泛的数据库之一,它有着良好的性能,能够跨平台,支持分布式,能够承受高并发。如果还没有安装 MySQL,下载地址:https://dev.mysql.com/downloads/mysql/5.7.html,安装参考:https://jingyan.baidu.com/article/fc07f989b298ca12ffe519b6.html。
Python小二
2020/08/18
1K0
相关推荐
Python 使用SQLAlchemy数据库模块
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验