python - Python Flask SQLAlchemy 中的数据访问对象(DAO)
问题描述
Python (Flask) SQL Alchemy 是同时使用 DAO 和 ORM 设计,还是仅仅使用 ORM?我正在学习设计策略,我想到了 SQLAlchemy。它是否也被视为 DAO(显然是 ORM)?
默认情况下,它看起来不像 DAO。
如果我为现有模型类定义了一个类,例如,假设我有以下类:
class User(db.model):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(120), unique=True, nullable=False)
verified= db.Column(db.String(5), unique=False, nullable=False)
我定义了另一个类,UserDao
class UserDao:
def addNewUser(user):
pass
def retrieveAllUsers(user):
users = User.query.limit(5).all()
我实例化这个 UserDao 类的对象并调用各自的方法通过各自的方法进行一些数据库操作,这是否使它成为“DAO 模式”?
解决方案
Sqlalchemy 实现存储库模式,而不是 dao 模式。
使用 sqlalchemy 时,您不必在代码中实现任何 dao 类。
使用 sqlalchemy orm session
(或基于 的类db.model
)意味着您正在使用存储库。
参考
推荐阅读
- java - VS Code 和 Java 大纲:类的继承字段/方法?
- angular - Angular - http请求收到null,不确定是前端还是后端问题
- stanford-nlp - 斯坦福核心 NLP NER 输出
- android - Motion Layout OnSwipe 禁止点击 YoutubePlayer (YoutubePlayer API)
- html - 表格强制显示:block;响应式设计不会填满屏幕
- r - 在 R 中拆分和组织名称字符串
- javascript - 引导下拉子菜单的键盘导航
- php - 将数据从表传输到同一数据库中的另一个表
- python - 试图向 Django 脆皮表单输入字段添加属性
- swift - 如何在闭包中使用闭包,而不创建无限循环?