SQLAlchemy
SQLAlchemy“采用简单的Python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型”。SQLAlchemy的理念是,SQL数据库的量级和性能重要于对象集合。我们可以使用Flask和SQLAlchemy的数据库访问层(DAL)轻松实现增删改查(CRUD)功能的封装!我们可以按照以下步骤进行。
这里假设你已经有一个Flask应用和一个SQLAlchemy数据库实例。
首先,我们需要定义数据库模型(Model)
然后创建一个数据访问层(Repository)来封装CRUD操作。
定义数据库模型
在models.py
文件中定义你的数据库模型。
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
def __repr__(self):
return f'<User {self.username}>'
在Repository中实现增删改查封装
在repositories.py
文件中创建数据访问层,封装CRUD操作。
class UserRepository:
def __init__(self):
self.db = current_app.extensions['sqlalchemy'].db
def add_user(self, username, email):
new_user = User(username=username, email=email)
self.db.session.add(new_user)
self.db.session.commit()
def get_user_by_id(self, user_id):
return User.query.get(user_id)
def get_user_by_username(self, username):
return User.query.filter_by(username=username).first()
def update_user(self, user_id, username=None, email=None):
user = self.get_user_by_id(user_id)
if user:
if username:
user.username = username
if email:
user.email = email
self.db.session.commit()
def delete_user(self, user_id):
user = self.get_user_by_id(user_id)
if user:
self.db.session.delete(user)
self.db.session.commit()
SQLAlchemy 在flask中的完整应用
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from .models import db # 假设你的models.py在同一目录下
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] ='mysql+pymysql://user:4ag;password@ip:port/your_db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
# 确保在应用上下文中使用数据库,如果不需要创建表,这段代码可以忽略
with app.app_context():
db.create_all() # 创建所有表
# 你可以在这里导入并使用UserRepository
from .repositories import UserRepository
# 示例:在视图中使用UserRepository
@app.route('/add_user', methods=['POST'])
def add_user():
# 假设你有一个方法来解析POST请求中的username和email
username = request.form['username']
email = request.form['email']
repo = UserRepository()
repo.add_user(username, email)
return 'User added successfully!', 201
我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!