Python Flask数据库ORM操作指南
需积分: 0 75 浏览量
更新于2024-08-05
收藏 1.02MB PDF 举报
本资源主要介绍了如何在Flask框架中使用ORM操作SQLite数据库,包括配置数据库、初始化、创建模型、数据同步以及进行数据库操作的测试。
1. **数据库ORM操作实现**
ORM(Object-Relational Mapping)是对象关系映射技术,允许开发者用Python对象的方式操作数据库。在Flask中,我们使用Flask-SQLAlchemy扩展来实现ORM。Flask-Migrate则用于数据库版本控制和迁移,使得数据库结构的变化能够安全地应用到现有数据库上。
2. **配置sqlite数据库**
SQLite是一种轻量级的数据库,适合小型应用。在`app/config.py`配置文件中设置`SQLALCHEMY_DATABASE_URI`,指定数据库的路径。通常,数据库文件会放在应用的实例目录下,例如`instance/flask.sqlite`。
3. **初始化数据库**
在`app/__init__.py`文件中,我们需要初始化Flask-SQLAlchemy和Flask-Migrate。首先导入所需的库,然后分别实例化`db`和`migrate`对象,最后在`create_app`函数中将它们添加到应用的扩展中。
4. **创建数据库模型**
数据库模型是在Python类中定义的,这些类代表了数据库中的表。例如,在`app/models.py`中,我们可以创建一个表示用户信息的模型类,使用`db.Column`来定义表的列,`db.Model`作为基类。
```python
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
def __repr__(self):
return f'<User {self.username}>'
```
5. **数据库模型初始化与数据同步**
- **迁移目录初始化**:Flask-Migrate会在项目中创建一个`migrations`目录,用于存放数据库迁移的相关文件。
- **迁移文件创建**:当数据库模型发生变化时,需要创建一个新的迁移文件,记录改动。
- **数据库同步**:运行`flask db migrate`命令生成迁移脚本,然后执行`flask db upgrade`将模型的改变应用到数据库。
6. **新增数据库模型与数据库同步**
如果需要添加新的模型,重复上述步骤即可。新增模型后,同样需要创建迁移文件并执行同步。
7. **数据库操作回退**
如果需要撤销最近的数据库更改,可以使用`flask db downgrade`命令回退到前一个迁移状态。
8. **数据库操作测试**
- **数据查询**:通过模型类实例的方法如`all()`、`filter()`等来查询数据。
- **数据插入**:创建模型类的实例,然后调用`db.session.add()`,最后提交事务`db.session.commit()`。
- **数据删除**:通过`delete()`方法标记要删除的实例,然后提交事务。
以上步骤详细介绍了Flask应用中使用ORM操作SQLite数据库的过程,从配置到模型创建,再到数据库的增删改查,为开发提供了方便和灵活性。
2022-09-21 上传
2021-12-17 上传
2021-05-21 上传
2021-06-09 上传
132 浏览量
2021-04-30 上传
2021-04-04 上传
点击了解资源详情
点击了解资源详情
chenbtravel
- 粉丝: 29
- 资源: 296
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析