Python flask框架 代码mysql增删查改怎么封装
时间: 2024-02-17 11:01:11 浏览: 153
在使用 Flask 框架进行开发时,我们通常会使用 ORM 工具来进行数据库操作。常用的 ORM 工具有 SQLAlchemy 和 Peewee。这里以 SQLAlchemy 为例,介绍如何封装 MySQL 的增删查改操作。
首先,我们需要在 Flask 中初始化 SQLAlchemy:
```python
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://user:password@host/db_name'
db = SQLAlchemy(app)
```
接下来,我们可以定义一个基础的 Model 类,所有的数据模型都继承自它:
```python
class BaseModel(db.Model):
__abstract__ = True
id = db.Column(db.Integer, primary_key=True)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
```
这里的 BaseModel 类定义了一个 id 字段和两个时间戳字段,所有的数据模型都会继承这些字段。
接着,我们可以定义一个封装了增删查改操作的基础 Repository 类:
```python
class BaseRepository:
model = None
@classmethod
def add(cls, data):
db.session.add(data)
db.session.commit()
@classmethod
def delete(cls, data):
db.session.delete(data)
db.session.commit()
@classmethod
def find(cls, **kwargs):
return cls.model.query.filter_by(**kwargs).first()
@classmethod
def find_all(cls, **kwargs):
return cls.model.query.filter_by(**kwargs).all()
@classmethod
def update(cls, data):
db.session.commit()
```
这里的 BaseRepository 类定义了 add、delete、find、find_all 和 update 五个方法,分别对应了增、删、查、查全部和改操作。这些方法都是基于 SQLAlchemy 提供的 API 进行封装的。
最后,我们可以定义一个具体的 Repository 类,继承自 BaseRepository,并指定对应的 model:
```python
class UserRepository(BaseRepository):
model = User
```
这里的 UserRepository 类继承了 BaseRepository 类,并指定了 model 为 User。这样,我们就可以通过 UserRepository 类来进行 User 数据模型的增删查改操作了。
```python
user = User(name='John')
UserRepository.add(user)
user = UserRepository.find(name='John')
user.name = 'Tom'
UserRepository.update(user)
UserRepository.delete(user)
users = UserRepository.find_all()
```
以上就是一个简单的 MySQL 增删查改操作的封装示例。在实际开发中,我们可以根据具体的需求对 Repository 类进行拓展,并且可以结合 Flask 的 Blueprint 等功能来进行模块化的开发。
阅读全文
相关推荐















