Flask-SQLAlchemy 基础用法
1 安装 Flask-SQLAlchemy
首先,确保您已安装 Flask 和 Flask-SQLAlchemy:
pip install Flask Flask-SQLAlchemy
2 创建 Flask 应用
创建一个基本的 Flask 应用结构:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db' # 使用 SQLite 数据库
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # 关闭信号追踪
db = SQLAlchemy(app)
3 定义模型
使用 Flask-SQLAlchemy 定义数据模型。每个模型类都对应数据库中的一张表:
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}>'
4 创建数据库和表
在应用启动时创建数据库和表:
@app.before_first_request
def create_tables():
db.create_all() # 创建所有模型的表
5 添加数据
使用 Flask-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'User {username} added!'
6 查询数据
使用 Flask-SQLAlchemy 查询数据:
@app.route('/users')
def get_users():
users = User.query.all() # 获取所有用户
return {'users': [user.username for user in users]} # 返回用户列表
7 更新数据
更新数据库中的数据:
@app.route('/update_user/<int:user_id>/<new_username>')
def update_user(user_id, new_username):
user = User.query.get(user_id) # 根据 ID 获取用户
if user:
user.username = new_username # 更新用户名
db.session.commit() # 提交更改
return f'User {user_id} updated to {new_username}.'
return 'User not found.'
8 删除数据
删除数据库中的数据:
@app.route('/delete_user/<int:user_id>')
def delete_user(user_id):
user = User.query.get(user_id) # 根据 ID 获取用户
if user:
db.session.delete(user) # 删除用户
db.session.commit() # 提交更改
return f'User {user_id} deleted.'
return 'User not found.'
9 运行应用
确保所有代码已保存,并运行 Flask 应用:
if __name__ == '__main__':
app.run(debug=True)
总结
这就是 Flask-SQLAlchemy 的基础用法,包括:
- 设置数据库连接
- 定义模型
- 创建数据库和表
- 添加、查询、更新和删除数据
Flask-SQLAlchemy 提供了一个简单而强大的接口,使得在 Flask 应用中处理数据库操作变得更加方便。您可以根据项目的需求扩展这些基本功能。
原文地址:https://blog.csdn.net/weixin_44791631/article/details/145098456
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!