Flask-SQLAlchemy 根据数据库中已有的表建立Model对象

官方文档

配置信息

class Config(object):
    """配置参数"""
    #sqlalchemy的配置参数 连接到数据库
    SQLALCHEMY_DATABASE_URI="[1 数据库类型]://[2 用户名]:[3 密码]@[4 数据库所在IP]:[5 端口号]/[6 数据库名]"
    #设置sqlalchemy自动跟踪数据库
    SQLALCHEMY_TRACK_MODIFICATIONS=True
app.config.from_object(Config)

1 填 mysql
2 3 4 5 6 填数据库相关信息





官方文档以及很多博客举的例子都是连接数据库后,通过建立Model向数据库中创建新表,然后进行相关数据库操作:

建立对象

class User(db.Model):
	__tablename__ ="user_table"  # 将要创建的表名
    id = db.Column(db.Integer, primary_key=True)
    password = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)

创建对应表

>>> from yourapplication import db
>>> db.create_all()  # 创建表

向表中写入数据

>>> from yourapplication import User
>>> admin = User('admin', '[email protected]') # 创建用户
>>> guest = User('guest', '[email protected]')
>>> db.session.add(admin) # 写入临时区
>>> db.session.add(guest)
>>> db.session.commit()  # 正式提交到数据库 有点像git工作机制

现在数据库中将存在一个名为“user_table”,拥有id,password,email三个属性列的表,且已写入两行数据。

id password email
1 admin [email protected]
2 guest [email protected]

这样Model的每个属性和数据库中每一列属性都是一一对应的,比如:

>>> admin.id
>>> admin
>>> admin.email
>>> admin@example.com








而反过来,如果把数据库中已有的表映射为Model进行操作时,需要注意:

每一属性特性必须都列出来

比如说,数据库表中各列的数据类型、是否为主键、是否为空等等配置如图所示
Flask-SQLAlchemy 根据数据库中已有的表建立Model对象_第1张图片
那么对应Model对象中各个属性特性都不可省略,并且变量名与列名一致,否则会出现各种错误。

class User(db.Model):
    __tablename__ ="user_table"
    id=db.Column(db.Integer,primary_key=True,unique=True,nullable=False)
    email=db.Column(db.VARCHAR(45),unique=True,primary_key=True,nullable=False)
    password=db.Column(db.VARCHAR(45),nullable=False)

你可能感兴趣的:(Web)