Flask-sqlalchemy(三)

1. Flask集成之Flask-sqlalchemy

选择一个集成了Flask的框架并不是必须的,但是可以不用自己写集成代码。Flask集成可以简化配置和操作,所以应该优先使用专门设计的Flask扩展包Flask-sqlalchemy。

  • 如何使用?
pip install flask-sqlalchemy
  • 注明:下述案例使用的是mysql数据库或者mariadb数据库

2. 数据库配置

from flas_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'xxxxxx'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True


# 由SQLAlchemy实例化的db对象表示数据库且提供访问Flask-SQLAlchemy的所有功能。
db = SQLAlchemy(app)

3. 定义模型

3-1. 什么是模型?

模型是指由应用程序使用的持久化实体。在ORM的背景下,一个模型通常是一个带有属性的Python类,其属性与数据库表的列相匹配对应。Flask-SQLAlchemy数据库实例提供了一个基类以及一组辅助类和函数用于定义它的结构。

3-2. 案例代码

class Role(db.Model):
    # __tablename__类变量定义数据库中表的名称。如果__tablename__缺省Flask-SQLAlchemy会指定默认的表名,但是这些缺省名称不遵守使用复数命名的约定,所以最好是显式命名表名。
    __tablename__ = 'role'
    # 其余的变量是模型的属性,被定义为db.Column类的实例。
    # 传给db.Column构造函数的第一个参数是数据库列的类型也就是模型属性的数据类型;
    # db.Column剩余的参数为每个属性指定了配置选项。
    # Flask-SQLAlchemy需要给所有的模型定义主键列,通常命名为id。
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.String(64), unique=True)

    # 两个模型都包含了repr()方法来给它们显示一个可读字符串,虽然不是完全必要,不过用于调试和测试还是很不错的。
    def __repr__(self):
        return '<Role %r>' % self.name

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, index=True)

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

猜你喜欢

转载自blog.csdn.net/gf_lvah/article/details/81053610