Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SQLAlchemy无法设置未映射的属性

SQLAlchemy无法设置未映射的属性
EN

Stack Overflow用户
提问于 2020-03-04 06:56:55
回答 1查看 188关注 0票数 0

我试图在我的SQLAlchemy模型类中使用未映射的属性。这就是我正在做的事情:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Event(db.Model):
    ....
    is_favourite = False

当我试图设置这个未映射的属性的值时,我有一个奇怪的行为。这就是发生的事情(假设我有3个事件的列表):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
events[0].is_favourite = True
events[1].is_favourite = True
events[2].is_favourite = True
current_app.logger.info(events[0].is_favourite)
current_app.logger.info(events[1].is_favourite)
current_app.logger.info(events[2].is_favourite)

这些指纹:

真假真

当我期待

真真真

在我看来,这似乎是一种非常奇怪的行为,因为这只是一种阶级属性。为什么会发生这种事?有没有办法在SQLAlchemy中使用未映射的属性?

编辑

正如斯蒂芬在注释中指出的那样,实现这一目标的正确方法是使用重构函数。顺便说一句,我的问题在于查询本身,因为我正在迭代

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Event.query.filter(Event.uuid.in_(events_uuids)) 

而不是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Event.query.filter(Event.uuid.in_(events_uuids)).all()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-04 11:07:57

即使将SQLAlchemy从等式中删除,通常也会将实例变量与类定义变量混淆。你可能也会遇到线程安全问题。

SQLAlchemy用模型对象在引擎盖下做了一些奇怪的事情。如果你想学得更多,这可能会给你指明正确的方向。

你可能想做的是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sqlalchemy.orm import reconstructor

class Event(db.Model):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.init_on_load()

    @reconstructor
    def init_on_load(self):
        self.is_favourite = False
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60528821

复制
相关文章
Flask-SQLAlchemy安装及设置
完整连接 URI 列表请跳转到 SQLAlchemy 下面的文档 (Supported Databases) 。这里给出一些 常见的连接字符串。
汪凡
2019/03/01
3.2K0
Entity Framework 私有属性映射
这篇文章纯属自娱自乐,因为在实际开发中用到私有化属性映射的可能性几乎为0。在EF中默认映射的是具有 public 修饰符的属性,但是如果是 internal 、 private 和 protected 修饰的属性要映射进数据库怎么做呢?下面我们分别来讲解一下。
喵叔
2020/09/08
4520
Entity Framewor简单属性映射
默认情况下可以不配置表名,我们的模型名称将会作为数据库的表名。但是大部分项目会要求数据库表名称的规范,例如我们要将模型 User 在数据库中映射为 Users,那么我们可以这么做,在派生类上下文中的 OnModelCreating 中进行如下定义:
喵叔
2020/09/08
7560
Entity Framework 简单属性映射
默认情况下可以不配置表名,我们的模型名称将会作为数据库的表名。但是大部分项目会要求数据库表名称的规范,例如我们要将模型 User 在数据库中映射为 Users,那么我们可以这么做,在派生类上下文中的 OnModelCreating 中进行如下定义:
喵叔
2020/09/08
8850
通过cycler实现属性的自动映射
在matplotlib中,默认存在一个颜色 的自动映射机制,当我们绘制多条直线时,会通过这个颜色映射机制来为每条直线赋予不同的颜色,代码如下
生信修炼手册
2020/09/14
6570
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
JPA 的 CascadeType 属性 和 FetchType属性 和 各种映射关系
代码地址:https://gitee.com/a247292980/lgp20151222 
ydymz
2018/09/10
2.1K0
openFileDialog的Filter属性设置
OpenFileDialog对话框的Filter属性说明:          首先说明一个示例,分析一下Filter属性的构成:“ Excel文件|*.xls ”,前面的“Excel文件”成为标签,是一个可读的字符串,可以自定定义,“|*.xls”是筛选器,表示筛选文件夹中后缀名为.xls的文件,“*”表示匹配Excel文件名称的字符串。          OK,下面说说我们经常要用到的几种情况: 1.  Filter是null或Empty,表示显示所有文件,并总会显示文件夹 2. 需要筛选特定的文件,设置
hbbliyong
2018/03/06
2.4K0
zepto中的属性设置
在分析这里的时候,一直很困惑,为什么实例化dom之后,对nodes进行属性设置会导致dom也有了属性设置的结果。回想了一下,在javascript中,对象是引用,而不是赋值,而dom不是zepto对象就是Dom对象,假如是zepto对象的话,那么nodes其实就是dom,因为在zepto的init方法中,传入参数是zepto对象的话则直接返回该对象。而如果是其他对象的话,则将其设置为数组的第一个元素返回该数组。
菜的黑人牙膏
2019/01/21
1.9K0
线程属性设置
本文将通过一个创建n个线程的案例来展示一下线程属性的设定及使用,通常情况下,系统对于线程的创建是没有限制的,但是每一个线程都是需要一个栈空间的,每个栈空间大小也都是固定的,可通过系统命令 ulimit -a 来查看,如果线程栈空间的总数超过了一个进程可使用的虚拟内存用户空间,那么就无法再继续创建线程了。我们只是做一个小的测试,调整每个线程的栈空间大小来揭露线程属性的使用方法,并提高一个程序创建线程的数量(Notice:提高线程数量并没有什么好处,我们只是为了演示如何修改线程属性)。
我与梦想有个约会
2023/10/20
1950
线程属性设置
iframe属性设置
<iframe runat=”server” src=”you page’s url” width=”750″ height=”30″ frameborder=”no” border=”0″ marginwidth=”0″ marginheight=”0″ scrolling=”no” allowtransparency=”yes”></iframe>
全栈程序员站长
2022/07/22
3.1K0
SQLAlchemy
SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果。
小小咸鱼YwY
2020/06/19
3.2K0
docker端口映射无法外部访问_docker用户映射
容器中可以运行一些应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。
全栈程序员站长
2022/11/02
1.8K0
Physmeme - Windows 未签名内核驱动映射器
Physmeme 是一个驱动映射器,它适用于任何形式的物理内存读写。它是高度模块化的代码,允许逆向工程师轻松集成他们自己的易受攻击的驱动程序。如果您能够读取和写入物理内存,您现在只需编写四个函数即可将未签名的驱动程序映射到内核中。
franket
2022/01/14
2.7K0
前端学习笔记之CSS属性设置 CSS属性设置
一 字体属性 1、font-weight:文字粗细 取值 描述 normal 默认值,标准粗细 bord 粗体 border 更粗 lighter 更细 100~900 设置具体粗细,400等同于normal,而700等同于bold inherit 继承父元素字体的粗细值 2、font-style:文字风格 normal 正常,默认就是正常的 italic 倾斜  3、font-size:文字大小 fs:一般是12px或13px或14px 注意: 1、通过font-size设置文字大小一定要带单位
Jetpropelledsnake21
2019/02/15
5.9K0
SQLAlchemy学习-7.Column 设置日期时间类型
前言 在表里面一般会设置创建时间和更新时间,创建时间是数据写入时候的时间,更新时间是表的数据有更新,自动获取当前时间。 onupdate 是在更新时执行该方法,一般用在更新时间字段上。 DateTime 日期时间 Column 字段设置 DateTime 日期时间类型 from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import create_engine, Column, Integer, String, Da
上海-悠悠
2022/07/19
4.4K0
SQLAlchemy学习-7.Column 设置日期时间类型
解决HTML select控件 设置属性 disabled 后无法向后台传值的方法
大家都知道有时候修改数据的时候我们希望有一些数据是不可以修改的,通常情况下我们会将input框设置为 readonly , 但是 select 控件没有这个属性,需要使用另一个属性 disabled ,但是接着又出现其他的问题就是将select控件设置为 disabled 后提交表单后台无法获取数据。
Yiiven
2022/12/15
2.9K0
Flask无法使用Flask-SQLALchemy扩展解决方案
前言 学习Flask的时候用到了Flask-SQLALchemy扩展,在使用过程可以正常导入Flask-SQLALchemy库,但是程序运行就出现缺少_sqlite3的错误。 运行环境 1.ubuntu 14.04 2.python 3.5 错误信息 ImportError: No module named _sqlite3 解决方案 1.ctrl+alt+t打开终端输入: ImportError: No module named _sqlite3 2.安装完毕后进入python官网下载python源文
木制robot
2018/04/13
1.1K0
Entity Framework复杂类型属性映射
以上代码在ORM中称为组合类,EF会将这两个类映射在一张表中。当Code First发现不能推断出类的主键,并且没有通过Data Annotations或Fluent API注册主键,那么该类型将被自动注册为复杂类型。
喵叔
2020/09/08
6980
Entity Framework复杂类型属性映射
ECharts分段型视觉映射组件的属性修改
ECharts文档:https://www.w3cschool.cn/echarts_tutorial/echarts_tutorial-4hnc2d9j.html
王小婷
2019/05/05
1.1K0
ECharts分段型视觉映射组件的属性修改

相似问题

SQLAlchemy AttributeError:无法设置属性

33

Sqlalchemy插入未映射

120

FastApi/Sqlalchemy“类未映射”错误

18

SqlAlchemy 'datetime.datetime‘未映射

13

flask-sqlalchemy插入未映射

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文