Flask中使用SQLAlchemy作为数据库ORM,以下是一些常用的db.Column参数总结和一些基本操作

  1. primary_key: 布尔类型,设置为True表示该列为表的主键。

  2. autoincrement: 布尔类型,通常与primary_key一起使用,设置为True表示该列是一个自增的主键。

  3. default: 可以为列设置一个默认值。可以是常量、变量或表达式。

  4. nullable: 布尔类型,设置为False表示该列不允许NULL值。

  5. unique: 布尔类型,设置为True表示该列的值在表中必须是唯一的。

  6. index: 布尔类型,设置为True表示该列将会被创建索引,以加快查询速度。

  7. documents: 指定列的数据类型,如db.Integerdb.Stringdb.Floatdb.Booleandb.DateTime等。

  8. foreign_key: 指定列是一个外键,指向另一个表的主键。

  9. comment: 字符串类型,用来给列添加注释,这在某些数据库系统中是有用的。

  10. server_ts: 布尔类型,设置为True表示服务器会维护列的创建时间戳,通常用于审计或日志记录。

  11. 扩展如何编写表的存储引擎:__table_args__ = {'mysql_engine': 'InnoDB'} # 设置表的存储引擎为InnoDB

这些参数允许你精确地控制每个数据库列的行为和属性。在定义模型类时,你可以根据需要将这些参数应用到db.Column实例上。

  1. 增删改查操作:通过模型实例可以进行增、删、改、查操作。
  • 增加:创建模型实例并添加到会话中,然后提交会话。
new_user = User(username='new_user', email='new_user@example.com')
db.session.add(new_user)
db.session.commit()
  • 删除:从会话中移除模型实例,然后提交会话。
user_to_delete = User.query.filter_by(id=1).first()
db.session.delete(user_to_delete)
db.session.commit()
  • 修改:修改模型实例的属性,然后提交会话。
user = User.query.filter_by(id=1).first()
user.username = 'updated_user'
db.session.commit()
  • 查询:使用查询API来获取数据。
# 获取所有用户
users = User.query.all()

# 根据条件查询用户
user = User.query.filter_by(email='user@example.com').first()

# 分页查询
users = User.query.paginate(page=1, per_page=10)
  1. 事务管理:在Flask-SQLAlchemy中,默认情况下,每个数据库操作都在一个事务中执行。如果需要手动控制事务,可以使用db.session.begin()db.session.commit()

try:
    # with db.session.begin(): 如果你不需要在循环中开始新的事务,那么不要调db.session.begin()。
    # 执行数据库操作
    pass
except Exception:
    db.session.rollback()  # 出现错误时回滚事务
    raise
else:
    db.session.commit()  # 操作成功时提交事务
finally:
    db.session.close()  # 确保关闭会话

通过这些步骤,可以有效地利用Flask和Flask-SQLAlchemy进行数据库的CRUD操作。

  • 15
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请把代码喂我嘴里

您的支持是,是小弟的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值