一文带大家快速上手SQLAlchemy 对数据的增删改查操作

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  

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


  

很高兴能为您解答问题。关于flask_sqlalchemy实现MySQL增删改查代码,以下是简单的示例代码供参考: 1. 首先安装相关依赖库,在终端运行命令: pip install flask flask_sqlalchemy pymysql 2. 在flask应用中,配置数据库连接参数: from flask_sqlalchemy import SQLAlchemy from flask import Flask app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@host/db_id' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) 3. 定义数据表模型: class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(20)) age = db.Column(db.Integer) gender = db.Column(db.String(10)) 4. 实现增删改查功能: a. 添加数据: user = User(name='username', age=20, gender='male') db.session.add(user) db.session.commit() b. 删除数据: user = User.query.filter_by(name='username').first() db.session.delete(user) db.session.commit() c. 更新数据: user = User.query.filter_by(name='username').first() user.age = 21 db.session.commit() d. 查询数据: # 查询所有数据 users = User.query.all() for user in users: print(user.name, user.age, user.gender) # 根据条件查询单个数据 user = User.query.filter_by(name='username').first() print(user.name, user.age, user.gender) 以上是flask_sqlalchemy实现MySQL增删改查的简单示例代码,如果需要更加详细的实现方式,可以参考flask_sqlalchemy官方文档。希望以上内容能对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试开发Kevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值