flask 对 mysql数据库的 *** 作依赖于flask_sqlalchemy包
在使用这包的时候需要优先给这个包一个实例化对象db = SQLAlchemy(),这样的话就可以避免结构混乱导致的循环导包
在通过SQLAlchemy()对mysql进行 *** 作的时候需要几个配置项:
# mysql+pymysql的目的是更好地对数据库进行 *** 作 只使用mysql的话引擎有点跟不上
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://用户名:密码@地址:端口/数据库库名'
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_ECHO = True
在定义模型映射类的时候需要继承db.Model db 是刚刚实例化的SQLAlchemy()
然后就是字段 由于在定义迁移的时候并不会自己生成id 所以我们要自行定义
create table tb_user
(
id int auto_increment primary key,
name int null,
gender int null,
create_date datetime null,
)
对应的就是:
class User(db.Model):
"""
用户表
"""
# 这个是表名
__tablename__ = 'tb_user'
id = db.Column(db.Integer, primary_key=True, doc='用户ID', autoincrement=True)
name = db.Column(db.String(32), doc='昵称')
create_date = db.Column(db.DateTime, default=datetime.now, doc='创建时间')
def __str__(self):
return self.name
通过这个模型类,我们就可以对数据库进行增删改查 *** 作了
增:user_obj = User(name=name, create_date=create_date)
db.session.add(user_obj)
db.session.commit()
删:User.query.filter(UserMod.id == id).delete()
db.session.commit()
或者
User.query.filter_by(id=id).delete()
db.session.commit()
改:User.query.filter(UserMod.id == id).update({'name': name)})
db.session.commit()
或者
User.query.filter_by(id=id).update({'name': name)})
db.session.commit()
查:获取所有: User.query.all()
获取id为1的 User.query.filter(User.id == 1).first()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)