第五章 Flask中操作数据库(二)

本文介绍了如何在Flask中进行数据库操作,包括使用db.create_all()创建表,通过db.session进行插入、修改和删除操作,并详细阐述了查询行的方法,如all()和过滤器。此外,还讨论了在视图函数中操作数据库以及在模板中显示数据的技巧。
摘要由CSDN通过智能技术生成

       学习是用模型的最好方法是在python shell中实际操作。shell使用flask shell启动,在这之前请先设定FLASK_APP环境变量。(提示:请按“Flask中操作数据库(一)”中的示例定义User和Role模型)

一. 数据库操作

1.1 创建表

db.create_all()函数将寻找所有db.Model的子类,然后在数据库中创建对应的表:

查看应用目录,将发现有个名为data.sqlite文件:

       可以通过db.drop_all()删除所有表,修改模型后使用db.create_all()再重新创建。但这样会造成数据被销毁,后续将介绍一种更好的数据库更新方式。

1.2 插入行

下面的代码创建一些角色和用户:

        role属性也可以使用,虽然它不是真正的数据库列,但确是一对多关系的高级表示。现在对象只存在于Python中,尚未写入数据库。对数据库的改动需要通过数据库会话(db.session)管理,准备将对象写入数据库之前需添加到session中:

         为了把对象写入数据库,需要使用commit()方法提交会话。db.session提供了增、删、改的相关方法,以及数据库提交commit()和回滚db.session.rollback()。 查看提交后的数据库表:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flask 配置数据库需要进行以下步骤: 1. 安装数据库驱动:根据你选择的数据库类型,安装相应的数据库驱动。例如,如果你使用的是 SQLite 数据库,可以通过运行以下命令安装驱动: ``` pip install sqlite3 ``` 2. 导入相关模块:在 Flask 应用,需要导入相应的模块来操作数据库。例如,如果你使用 SQLite 数据库,可以导入 `sqlite3` 模块: ```python import sqlite3 ``` 3. 配置数据库连接:在 Flask 应用的配置文件,设置数据库连接的相关配置。你可以指定数据库的类型、主机名、端口号、用户名、密码等信息。例如,对于 SQLite 数据库,可以将以下代码添加到 Flask 应用的配置文件(如 `config.py`): ```python DATABASE = '/path/to/database.db' ``` 4. 初始化数据库连接:在 Flask 应用,可以通过在应用初始化时创建数据库连接。你可以使用 Flask 提供的 `before_first_request` 装饰器,确保在第一个请求处理前初始化数据库连接。例如: ```python from flask import Flask app = Flask(__name__) @app.before_first_request def initialize_database(): # 创建数据库连接 g.db = sqlite3.connect(app.config['DATABASE']) # 设置返回字典格式的查询结果 g.db.row_factory = sqlite3.Row @app.route('/') def index(): # 在请求处理函数使用数据库连接 cursor = g.db.execute('SELECT * FROM users') users = cursor.fetchall() # ... ``` 5. 关闭数据库连接:在 Flask 应用结束时,需要关闭数据库连接。你可以使用 Flask 提供的 `teardown_appcontext` 装饰器,在应用上下文销毁时关闭数据库连接。例如: ```python from flask import Flask, g app = Flask(__name__) @app.teardown_appcontext def close_database(error): # 关闭数据库连接 db = g.pop('db', None) if db is not None: db.close() if __name__ == '__main__': app.run() ``` 以上是在 Flask 配置数据库的基本步骤。在实际应用,还可以使用 ORM(对象关系映射)工具,如 SQLAlchemy,来简化数据库操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值