Flask 是一个轻量级的 Python Web 框架,它灵活且易于扩展,广泛用于构建小型到中型的 Web 应用程序,在开发 Web 应用时,数据存储和管理是不可或缺的一环,本文将详细介绍如何在 Flask 应用中生成并操作一个数据库。
一、准备工作
在开始之前,请确保你已经安装了 Flask,如果还没有安装,可以使用以下命令进行安装:
pip install Flask
二、创建 Flask 项目
我们创建一个新的 Flask 项目,如果你还没有现成的项目结构,可以使用以下命令创建一个新的目录并在其中创建文件:
mkdir myflaskapp cd myflaskapp touch app.py
在app.py
文件中,设置基本的 Flask 应用:
from flask import Flask app = Flask(__name__) @app.route('/') def home(): return "Hello, Flask!" if __name__ == '__main__': app.run(debug=True)
运行python app.py
,你应该能在浏览器中看到 "Hello, Flask!"。
三、安装和配置 Flask-SQLAlchemy
Flask-SQLAlchemy 是 Flask 扩展之一,用于简化数据库操作,安装 Flask-SQLAlchemy:
pip install Flask-SQLAlchemy
在app.py
中配置 SQLAlchemy:
from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db' # 使用 SQLite 数据库 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) @app.route('/') def home(): return "Hello, Flask with SQLAlchemy!" if __name__ == '__main__': app.run(debug=True)
四、定义模型
在 Flask 应用中使用 SQLAlchemy,需要定义模型类,模型类继承自db.Model
,每个类对应数据库中的一张表,下面是一个简单的用户模型示例:
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}>'
五、创建数据库
首次运行应用时,需要创建数据库和表,可以通过以下命令创建数据库(假设当前脚本为app.py
):
export FLASK_APP=app.py export FLASK_ENV=development flask db init flask db migrate -m "Initial migration." flask db upgrade
这些命令会依次初始化数据库、生成迁移脚本并应用迁移,从而创建数据库表。
六、操作数据库
创建了模型之后,就可以通过模型类来操作数据库,添加一个新用户:
@app.route('/add_user/<username>/<email>/') def add_user(username, email): new_user = User(username=username, email=email) db.session.add(new_user) db.session.commit() return f"Added user: {username}"
查询所有用户:
@app.route('/users') def get_users(): users = User.query.all() return '<br>'.join([user.username for user in users])
更新用户信息:
@app.route('/update_user/<int:id>/<username>/') def update_user(id, username): user = User.query.get(id) if user: user.username = username db.session.commit() return f"Updated user {id} to {username}" return "User not found", 404
删除用户:
@app.route('/delete_user/<int:id>') def delete_user(id): user = User.query.get(id) if user: db.session.delete(user) db.session.commit() return f"Deleted user {id}" return "User not found", 404
七、完整代码示例
以下是一个完整的示例代码,包含上述所有步骤:
from flask import Flask, request from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) 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}>' @app.route('/') def home(): return "Hello, Flask with SQLAlchemy!" @app.route('/add_user/<username>/<email>/') def add_user(username, email): new_user = User(username=username, email=email) db.session.add(new_user) db.session.commit() return f"Added user: {username}" @app.route('/users') def get_users(): users = User.query.all() return '<br>'.join([user.username for user in users]) @app.route('/update_user/<int:id>/<username>/') def update_user(id, username): user = User.query.get(id) if user: user.username = username db.session.commit() return f"Updated user {id} to {username}" return "User not found", 404 @app.route('/delete_user/<int:id>') def delete_user(id): user = User.query.get(id) if user: db.session.delete(user) db.session.commit() return f"Deleted user {id}" return "User not found", 404 if __name__ == '__main__': db.create_all() # 创建数据库和表(仅首次) app.run(debug=True)
相关问题与解答
问题1:如何更改数据库URI以使用其他类型的数据库?
答:更改app.config['SQLALCHEMY_DATABASE_URI']
的值即可,使用 PostgreSQL 数据库,可以设置为:postgresql://username:password@localhost/mydatabase
,确保已安装相应的数据库驱动(如psycopg2
),并根据需求调整连接参数。
各位小伙伴们,我刚刚为大家分享了有关“flask生成数据库”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/729598.html