【问题标题】:How to automaticaly insert a row in flask-sqlalchemy while creating the database in flask在flask中创建数据库时如何在flask-sqlalchemy中自动插入一行
【发布时间】:2021-02-10 06:30:30
【问题描述】:

我使用 python flask 创建了一个数据库脚本。我使用了烧瓶-sqlalchemy。我想在创建数据库后立即在数据库中插入一条记录。请指导我做。我从头开始编写以下代码。

from flask import Flask, request, flash, url_for, redirect, render_template
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///students.sqlite3'
app.config['SECRET_KEY'] = "random string"

db = SQLAlchemy(app)

class students(db.Model):
    id = db.Column('student_id', db.Integer, primary_key = True)
    name = db.Column(db.String(100))
    city = db.Column(db.String(50))
    addr = db.Column(db.String(200)) 
    pin = db.Column(db.String(10))

    def __init__(self, name, city, addr,pin):
        self.name = name
        self.city = city
        self.addr = addr
        self.pin = pin

@app.route('/')
def show_all():
   return render_template('show_all.html', students = students.query.all() )

@app.route('/new', methods = ['GET', 'POST'])
def new():
   if request.method == 'POST':
      if not request.form['name'] or not request.form['city'] or not request.form['addr']:
         flash('Please enter all the fields', 'error')
      else:
         student = students(request.form['name'], request.form['city'],
            request.form['addr'], request.form['pin'])
         
         db.session.add(student)
         db.session.commit()
         flash('Record was successfully added')
         return redirect(url_for('show_all'))
   return render_template('new.html')

if __name__ == '__main__':
   db.create_all()
   app.run(debug = True)

【问题讨论】:

    标签: flask flask-sqlalchemy


    【解决方案1】:

    你可以像这个例子一样使用@app.before_first_request。顺便说一句,在上层班级开始班级名称是常见的做法。 见https://flask.palletsprojects.com/en/1.1.x/api/#flask.Flask.before_first_request

    @app.before_first_request
    def populate_db():
        student = students(
            name = 'Rishkan', 
            city = 'New York',
            addr = 'test street 10',
            pin = '1234')
        
        db.session.add(student)
        db.session.commit()
    

    【讨论】:

      猜你喜欢
      • 2014-03-25
      • 2015-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      • 1970-01-01
      • 2023-03-17
      相关资源
      最近更新 更多