form = NameForm() if form.validate_on_submit(): user = User.query.filter(username=form.name.data).first() if user is None: user = User(username=form.name.data) db.session.add(user) db.session.commit() session['known'] = False else: session['known'] = True session['name'] = form.name.data return redirect(url_for('index')) return render_template('index.html', form=form, name=session.get('name'), known=session.get('known', False))

配套模板:

{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
{% block title %}MyFlask{% endblock %}
{% block page_content %}
<div class="page-header">
    <h1>Hello, {% if name %}{{ name }}{% else %}Stranger{% endif %}</h1>
    {% if not known %}
    <p>Pleased to meet you!</p>
    {% else %}
    <p>Happy to see you again!</p>
    {% endif %}
{{ wtf.quick_form(form) }}
{% endblock %}

参考资料:《Flask Web开发(第二版)》

实现一个用户数据的名字记录到数据库中:@app.route('/', methods=['GET', 'POST'])def index(): form = NameForm() if form.validate_on_submit(): user = User.query.filter(username=form.name.data).first() if user is None: user = User(username=
@orm.reconstructor sqlalchemy 创建实例的时候并不是像我们普通通过构造 函数 这样创建的方式来创建的, 而是通过元类的方式动态的创建实例对象。在python里面绝大多数的ORM都是通过元类的方式来创建对象,而不是通过普通实例化方式来创建的。那么通过元类的方式创建至少在 sqlalchemy 里面是不会通过构造 函数 来创建的。 如果我们就想在模型对象实例化的时候执行__init_...
一、 SQLAlchemy 简介 1.1、 SQLAlchemy 是什么? sqlalchemy 是一个python语言实现的的针对关系型 数据库 的orm库。可用于连接大多数常见的 数据库 ,比如Postges、MySQL、SQLite、Oracle等。 1.2、为什么要使用 SQLAlchemy ? 它将你的代码从底层 数据库 及其相关的SQL特性 抽象出来。 1.3、 SQLAlchemy 提供了两种主要的使用模式 SQL表达式语言( SQLAlchemy Core) 1.4、应该选择哪种模式? 虽然你使用的框架 已经内置
1.定义: 当查询的复杂度很高时,指多字段,多关系查询,会导致sql语句混乱,不利于sql语句的编写和编写的sql语句的可读性,引入了 视图 视图 是一张虚拟的表,有字段和数据,只存放查询语句 视图 有字段有行,但是 视图 基于源表 2.特点: 视图 的优点 1.简单: 视图 构建了一个虚拟的表,表里的数据是来源于复杂的查询语句,我们将复杂的查询语句存入 视图 ,使用是直接调用 视图 2.安全... ```python from flask import Flask , jsonify, request from flask _ sqlalchemy import SQLAlchemy app = Flask (__name__) app.config[' SQLALCHEMY _DATABASE_URI'] = 'sqlite:///database.db' db = SQLAlchemy (app) 3. 创建一个模型类 ```python class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50), nullable=False) email = db.Column(db.String(50), nullable=False, unique=True) 4. 创建 数据库 表 ```python db.create_all() 5. 定义路由和 视图 函数 ```python @app.route('/users', methods=['GET']) def get_users(): users = User.query.all() return jsonify({'users': [user.to_dict() for user in users]}) @app.route('/users', methods=['POST']) def create_user(): user_data = request.get_json() user = User(name=user_data['name'], email=user_data['email']) db.session.add(user) db.session.commit() return jsonify({'message': 'User created successfully'}) @app.route('/users/<int:user_id>', methods=['PUT']) def update_user(user_id): user = User.query.get(user_id) user_data = request.get_json() user.name = user_data['name'] user.email = user_data['email'] db.session.commit() return jsonify({'message': 'User updated successfully'}) @app.route('/users/<int:user_id>', methods=['DELETE']) def delete_user(user_id): user = User.query.get(user_id) db.session.delete(user) db.session.commit() return jsonify({'message': 'User deleted successfully'}) 6. 运行应用程序 ```python if __name__ == '__main__': app.run(debug=True) 现在你可以使用Postman或其他HTTP客户端应用程序测试这个API,例如: - GET /users - 获取所有用户 - POST /users - 创建新用户 - PUT /users/1 - 更新ID为1的用户 - DELETE /users/1 - 删除ID为1的用户 注意:这只是一个简单的示例,实际使用 需要考虑更多的数据验证、错误处理和安全性问题。 ERROR: Could not find a version that satisfies the requirement alembic==1.5.7 (from versions: none)