配置信息
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', 'admin@example.com') # 创建用户
>>> guest = User('guest', 'guest@example.com')
>>> db.session.add(admin) # 写入临时区
>>> db.session.add(guest)
>>> db.session.commit() # 正式提交到数据库 有点像git工作机制
现在数据库中将存在一个名为“user_table”,拥有id,password,email三个属性列的表,且已写入两行数据。
id | password | |
---|---|---|
1 | admin | admin@example.com |
2 | guest | guest@example.com |
这样Model的每个属性和数据库中每一列属性都是一一对应的,比如:
>>> admin.id
>>> admin
>>> admin.email
>>> admin@example.com
而反过来,如果把数据库中已有的表映射为Model进行操作时,需要注意:
每一属性特性必须都列出来
比如说,数据库表中各列的数据类型、是否为主键、是否为空等等配置如图所示
那么对应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)