在Python开发Web应用时,Flask框架是一个轻量级且灵活的选择。而SQLite3则是一个嵌入式数据库,非常适合小型项目或开发阶段的数据存储。本文将介绍两种在Flask中使用SQLite3的方法:一种是直接使用Python的sqlite3库进行SQL操作(raw SQL),另一种是通过ORM(对象关系映射)库,如Flask-SQLAlchemy。 ### 方式一:Raw SQL 在第一种方法中,我们直接使用Python的sqlite3库与数据库交互。我们需要导入`sqlite3`库,并创建一个Flask应用实例。然后,定义一个全局变量`DATABASE_URI`,在这个例子中使用内存中的数据库。在`before_first_request`装饰器中,我们创建数据库连接,执行SQL语句来创建表和插入数据。以下是一些关键步骤: 1. 连接数据库:`conn = sqlite3.connect(DATABASE_URI)` 2. 创建游标对象:`c = conn.cursor()` 3. 执行SQL(创建表、删除表、插入数据):`c.execute()` 4. 提交事务:`conn.commit()` 5. 关闭连接:`conn.close()` 为了简化查询,我们可以定义一个`get_db`函数获取数据库连接,并设置`row_factory`为`sqlite3.Row`,这样返回的查询结果将是字典类型。另外,`query_db`函数用于执行SQL查询,可接受参数并返回结果。 在Flask路由中,我们可以通过`query_db`函数来查询数据并返回给前端。 ### 方式二:ORM(Flask-SQLAlchemy) 第二种方法使用ORM库,这里我们选择Flask-SQLAlchemy扩展。导入Flask和SQLAlchemy库,创建Flask应用实例,然后配置SQLite数据库URI。接下来,初始化SQLAlchemy对象,并定义一个User模型,它包含了数据库表的结构。 ```python db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), unique=True) email = db.Column(db.String(120), unique=True) ``` 在模型定义后,我们可以使用ORM的方式进行增删改查操作。例如,创建用户、获取用户、更新用户和删除用户。这种方式更加面向对象,代码更易读,但可能会稍微慢于直接执行SQL。 在Flask路由中,我们可以像这样获取和返回数据: ```python @app.route("/user/<int:id>") def user(id): user = User.query.get(id) return jsonify(id=user.id, name=user.name, email=user.email) ``` 这种方式不需要手动编写SQL,而是通过调用`User.query.get(id)`这样的方法来操作数据库。 总结来说,两种方式各有优缺点。使用raw SQL直接操作数据库更直接,性能可能稍好,但需要手动编写和管理SQL语句。而ORM如Flask-SQLAlchemy则提供了更高级别的抽象,使得代码更易于维护,但可能会有性能上的牺牲。在实际项目中,选择哪种方式取决于项目规模、团队技能以及对性能的要求。
- 粉丝: 11
- 资源: 871
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助