flask flask-sqlalchemy使用

本文介绍如何使用Flask框架连接MySQL数据库,包括配置数据库连接、创建数据模型、执行数据库操作如创建表、添加和删除数据等。同时,探讨了一对一、多对多关系的实现方法以及会话管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

连接数据库 mysql

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app=Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI']=''mysql+pymysql://root:root@127.0.0.1:3306/test'

models.py 文件
db=SQLAlchemy(app)
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)

    def __init__(self, username, email):
        self.username = username
        self.email = email

    def __repr__(self):
        return '<User %r>' % self.username



app.py 文件
# 创建表
db.create_all()
# 添加数据
db.session.add(obj)
db.session.commit()

一对一

class Role(db.Model):
    # ...
    users = db.relationship('User', backref='role')
 
class User(db.Model):
    # ...
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))  # 外键关系.
 
 
###############
db.ForeignKey('roles.id') : 外键关系,
 
Role.users = db.relationship('User', backref='role') : 代表 外键关系的 面向对象视角. 对于一个 Role 类的实例, 其 users 属性将返回与角色相关联的用户组成的列表. 
    db.relationship() 第一个参数表示这个关系的另一端是哪个模型. 
    backref 参数, 向 User 模型添加了一个 role 数据属性, 从而定义反向关系.  这一属性可替代 role_id 访问 Role 模型, 此时获取的是模型对象, 而不是外键的值.

多对多

 

registrations = db.Table("registrations",
    db.Colum("student_id",db.Integer,db.Foreignkey("student")),
    db.Colum("class_id",db.Integer,db.Foreignkey("classes")))

class Student(db.Model):
    __tablename__="student"
    id=db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String)
    classes =db.relationship("Class",secondary=registrations,
                    backref="students")


class Classes(db.Model):
    __tablename__="classes"
    id=db.Column(db.Integer,primary_key=True)
    name=db.Column(db.String)

#必须把 secondary 参数设为 关联表.

多对多关系可以在任何一个类中定义, backref 参数会处理好关系的另一侧.

会话管理

db.session.add(object)
db.session.commit()提交

db.session.add_all(iterable)
db.session.delete(obj)

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值