如何实现一个默认的SQLAlchemy模型类,它包含用于继承的公共CRUD方法?

2024-06-06 18:54:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否有可能实现一个默认的SQLAlchemy模型类,该类为其子类提供基本的CRUD功能。我想使用这个基类来避免不同数据库模型之间的代码重复。在

这种功能的一个例子是在数据库中创建(并保存)相应模型的实例。我知道,为了遵守原子性原则,这种方法只能用于不相互依赖的交易。有没有什么内置的机制或解决方法可以做到这一点?在

下面是一个显然行不通的例子(它的唯一目的是让大家了解这个想法):

import flask
import flask_sqlalchemy
import sqlalchemy
from flask import Flask
from flask_sqlalchemy import SQLAlchemy


app = Flask(__name__)

# app.config['SQLALCHEMY_DATABASE_URI'] = ...
db = SQLAlchemy(app)

class DefaultModel(db.Model):
    def create(self, **attributes):
        try:
            # should be considered pseudocode
            instance = self._init_(attributes) 
            db.session.add(instance)
            db.session.commit()
            return instance
        except sqlalchemy.exc.SQLAlchemyError:
            db.session.rollback()
            return None

class MyModel(DefaultModel):
    __tablename__ =  'mytable'

    id = db.Column(db.BigInteger(), primary_key=True)
    # ...

由于DefaultModel类中没有主键属性定义,因此引发以下异常:

^{pr2}$

Tags: 方法instancefrom模型import功能数据库app
1条回答
网友
1楼 · 发布于 2024-06-06 18:54:56

第一件事是基于你的帖子,你没有把插件的版本固定在你自己的版本中,这意味着Maven自己负责它,它使用Maven自己定义的版本,你可以在以下文档中阅读:

这意味着,如果您更改Maven版本,那么将要使用的插件的版本将发生更改。因此,通过公司pom中的插件管理来定义所使用的插件版本是非常必要的

此外,您的消息告诉我,您在访问内部存储库管理器时似乎遇到了一些问题,因为它无法下载需要解决的工件

更新:(缺少maven clean插件)

相关问题 更多 >