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  
我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!
   













![[含文档+PPT+源码等]精品大数据项目-基于python爬虫实现的大数据岗位的挖掘与分析](https://img-blog.csdnimg.cn/img_convert/bcd835087bdf6be5c5115e4af597adaa.png)






