【SQLALchemy】配置与创建模型类

本文介绍了如何在Flask应用中配置SQLAlchemy以连接MySQL数据库,包括安装必要的扩展和设置数据库URL。此外,还讲解了创建模型类,包括常见的SQLAlchemy字段类型和关系选项。

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

一、配置

在Flask中使用mysql数据库,需要安装一个flask-sqlalchemy的扩展。

pip install flask-sqlalchemy

要连接mysql数据库,仍需要安装数据库引擎

  1. python2中安装flask-mysqldb
    pip install flask-mysqldb
    
  2. python3中安装pymysql
    pip install pymysql
    

使用Flask-SQLAlchemy管理数据库

使用Flask-SQLAlchemy扩展操作数据库,首先需要建立数据库连接。数据库连接通过URL指定,而且程序使用的数据库必须保存到Flask配置对象的SQLALCHEMY_DATABASE_URI键中。

  1. python2
    # 'mysql://用户名:密码@mysql的host:port/数据库名'
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/test3'
    
  2. python3
    import mysql
    mysql.install_as_MySQLdb() #设置数据库引擎
    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:mysql@127.0.0.1:3306/db_python04"
    

二、创建模型类

常用的SQLAlchemy字段类型
在这里插入图片描述
常用的SQLAlchemy列选项
在这里插入图片描述
常用的SQLAlchemy关系选项
在这里插入图片描述
代码

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import pymysql
pymysql.install_as_MySQLdb()

app = Flask(__name__)


class Config(object):
    """配置参数"""
    # sqlalchemy的配置参数
    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:947364@127.0.0.1:3306/db_python04"

    # 设置sqlalchemy自动更跟踪数据库
    SQLALCHEMY_TRACK_MODIFICATIONS = True

	#设置每次请求结束后会自动提交数据库中的改动 不建议使用!!!
	SQLALCHEMY_COMMIT_ON_TEARDOWN = True

	#查询时会显示原始SQL语句
	SQLALCHEMY_ECHO = True


app.config.from_object(Config)

# 创建数据库sqlalchemy工具对象
db = SQLAlchemy(app)


class Role(db.Model):
    """用户角色/身份表"""
    __tablename__ = "tbl_roles"# 指明数据库的表名

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32), unique=True)
    # 设置数据库关系,可以不用设置,只是查询的时候有点麻烦,查询后面文章会写
    users = db.relationship("User", backref="role")
	
    def __repr__(self):
        """定义之后,可以让显示对象的时候更直观"""
        return "Role object: name=%s" % self.name


class User(db.Model):
    """用户表"""
    __tablename__ = "tbl_users"  # 指明数据库的表名

    id = db.Column(db.Integer, primary_key=True)  # 整型的主键,会默认设置为自增主键
    name = db.Column(db.String(64), unique=True)
    email = db.Column(db.String(128), unique=True)
    password = db.Column(db.String(128))
    # 设置外键
    role_id = db.Column(db.Integer, db.ForeignKey("tbl_roles.id"))

    def __repr__(self):
        return "User object: name=%s" % self.name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值