- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个独立的 SQLAlchemy 接口(interface)连接到 Postgres 数据库。在 Flask 应用程序的上下文中,第一个接口(interface)包含此模型:
app = create_app() # sets the SQLAlchemy Database URI, etc.
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
created_at = db.Column(db.DateTime, default=datetime.datetime.utcnow)
updated_at = db.Column(db.DateTime, onupdate=datetime.datetime.utcnow)
name = db.Column(db.String, nullable=False)
第二个接口(interface)不是通过 Flask —— 相反,它是一个监听特定事件的脚本,在这种情况下,它旨在执行一些计算并更新数据库中的行。为此,我让 SQLAlchemy 反射(reflect)了现有的数据库:
from sqlalchemy import create_engine, MetaData, Table
from sqlalchemy.orm import mapper, sessionmaker
from sqlalchemy.ext.automap import automap_base
from os import environ
dbPath = "postgresql://" + ...
engine = create_engine(dbPath)
Base = automap_base()
Base.prepare(engine, reflect=True)
metadata = MetaData(engine)
class User(object):
pass
users = Table('user', metadata, autoload=True, autoload_with=engine)
mapper(User, users)
Session = sessionmaker(bind=engine)
session = Session()
我现在遇到的问题是:当我使用第一个界面创建新条目或更新条目时,事情按预期工作,created_at
和 updated_at
字段已适当更新。
但是,当我使用第二个界面时——导入代码并使用 session.query(User)
获取条目并更新它时,updated_at
字段没有改变。此外,当我使用此界面创建新用户时,虽然它按预期创建了新行,但它既不填充 created_at
也不填充 updated_at
字段。
我的问题:
default/onupdate
方法?最佳答案
default
和 onupdate
在 Python 中完全由客户端处理,因此无法从数据库反射(reflect)出来。参见 "Limitations of Reflection" .在 default
的情况下,您可以使用 server_default
:
class User(db.Model):
...
created_at = db.Column(db.DateTime,
server_default=text("now() at time zone 'UTC'"))
对于 onupdate
,您必须编写一个数据库触发器并使用 server_onupdate=FetchedValue()
.
另一方面,您可以避免所有这些,只需将模型与应用程序代码分离到一个模块中,供 Flask 应用程序和脚本使用。这当然会涉及更多,因为您必须使用 vanilla SQLAlchemy 声明式而不是 Flask-SQLAlchemy 的自定义 db.Model
基础。或者,您可以使用 custom commands使用 Flask 来实现您的脚本,这将允许使用 Flask-SQLAlchemy 扩展。
关于Python SQLAlchemy : Reflecting the database breaks default/onupdate methods?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43359116/
这个问题在这里已经有了答案: How can I use an action to determine a control's visibility? (3 个回答) 7年前关闭。 当我通过将连接的
所以,我开发了一个 android 小部件,它应该用作按钮。我使用了这里给出的基本代码:http://developer.android.com/guide/topics/appwidgets/ind
我试图声明 create_time和 update_time MySQL 数据库中具有高精度(毫秒/微秒精度)。问题是我找不到正确的语法/函数来运行这两个要求。 到目前为止的假设/挖掘: 我找到了My
我有一个文章模型,它会根据它的标题有 slug,模型是这样的: from sqlalchemy.ext.declarative import declarative_base from sqlalch
当我更新数据库版本时,它并没有删除所有的表(以为我会是默认行为)。我还需要做其他事情吗? 最佳答案 您使用的是哪个 SQLiteOpenHelper? 检查生成的 DaoMaster 类。它有一个内部
我想制作一个类似于 Widget 的 CountDown 计时器。我希望它每秒更新一次。下面是我的代码。 onUpdate() 根本不会被调用,除了开始时调用一次。请指出我的问题。提前致谢。 JAVA
我正在为我的应用程序开发一个小部件。小部件名称是历史记录,当用户浏览任何 URL 时,我会将其存储在本地数据库中,从中列出哪个小部件。 当我打开小部件时,它会从本地数据库中获取所有详细信息并将其显示在
public class VWid extends AppWidgetProvider { public static String WIDGET_UPDATE = "WIDGET_UPDAT
我正在为 SQLAlchemy 开发一个 Audit mixin,但不确定具体该怎么做。 我的类(class)是这样的: class AuditColumns(object): created
我想创建一个具有两种小部件尺寸(4x2 和 4x4)的应用。 为此,我创建了两个接收器:
我有一个循环函数的情况,找不到解决方案。 有一个集合,其中有一个标志,表明数据是否已更改。还想记录更改。 export async function landWrite(change, context
在Delphi XE7中,我使用这个技巧根据ListView中的项目是否被选择来自动启用或禁用工具栏按钮(“编辑ListView项目”),以防止用户单击该按钮(如果有)没有选择 ListView 项目
我是 javascript 和 google 云函数的新手。我遵循了文档,但仍然不知道为什么 orderdata 返回未定义。 exports.updateordersumry = functions
UIView animatWithDuration对completion有一个可选参数,但是我对update需要一个参数 整个想法是我需要一个在动画的每个帧上运行的块。我想我可以用NSInterval
我想更新名为 recipes 的集合中文档中的两个字段,我使用了批量更新来完成它: let recipeRef = db.collection('recipes').doc(`${recipeId}`
我对 android appwidget 的 onUpdate 函数有疑问:我每天使用该函数更新一次 appwidget。在此之前,我使用 TimerTask 类来更新小部件,但 Android 有时
我一直在查看这个文档: http://andengine-doc.googlecode.com/hg/org/anddev/andengine/entity/modifier/SequenceEnti
我试图在升级时删除我的表,它会删除空表,但如果表中有行 - 它不会被删除。 我尝试了以下代码来首先清理表格: @Override public void onUpgrade(SQLiteDatabas
我的应用程序中有一个小部件,每次我安装/删除/更新第 3 方应用程序,因为 onUpdate() 方法可能被调用并且我编写的代码未正确执行。 可以肯定的是,AppWidgetManager 会响应以下
我的应用程序小部件从不转到 onUpdate 函数我添加了 3000 mili 用于测试,但除了第一次添加它之外,它永远不会进入 onUpdate 函数。 我做错了什么? 我的 list 文件:
我是一名优秀的程序员,十分优秀!