我正在尝试为我的家人构建一个杂务应用程序,当我尝试添加杂务时,它会出现以下错误“sqlalchemy.exc.OperationalError:(sqlite3.OperationalError)没有这样的表:杂务[SQL:插入杂务(数据、日期、用户id)”。我不太确定我是否一直收到此错误,即使我的应用程序中有一个名为Chore的表。对新手有什么建议吗?(我也是堆栈溢出新手)
这是我的模特
from . import db
from flask_login import UserMixin
from sqlalchemy.sql import func
class Chore(db.Model):
id = db.Column(db.Integer, primary_key=True)
data = db.Column(db.String(10000))
date = db.Column(db.DateTime(timezone=True), default=func.now())
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(150), unique=True)
password = db.Column(db.String(150))
firstName = db.Column(db.String(150))
chores = db.relationship('Chore')
这是我的观点
from flask import Blueprint, render_template, request, flash, jsonify
from flask_login import login_required, current_user
from .models import Chore
from . import db
import json
views = Blueprint('views', __name__)
@views.route('/')
def home():
return render_template("home.html", user=current_user)
@views.route('/adhome', methods=['GET', 'POST'])
@login_required
def adhome():
if request.method == 'POST':
chore = request.form.get('chore')
if len(chore) < 1:
flash('Chore is too short!', category='error')
else:
new_chore = Chore(data=chore, user_id=current_user.id)
db.session.add(new_chore)
db.session.commit()
flash('Chore added!', category='success')
return render_template("adhome.html", user=current_user)
@views.route('/delete-note', methods=['POST'])
def delete_note():
note = json.loads(request.data)
noteId = note['noteId']
note = Chore.query.get(noteId)
if note:
if note.user_id == current_user.id:
db.session.delete(note)
db.session.commit()
return jsonify({})
这是HTML模板页面adhome.HTML
{% extends "base.html" %} {% block title %}Chores{% endblock %} {% block content%}
<h1 align="center">Chores</h1>
<ul class="list-group list-group-flush" id="notes">
{% for chore in user.chore %}
<li class="list-group-item">
{{ chore.data }}
<button type="button" class="close" onClick= "deleteNote({{ chore.id }})">
<span aria-hidden="true">×</span>
</button>
</li>
{% endfor %}
</ul>
<form method="POST">
<textarea name="chore" id="chore" class="form-control"></textarea>
<br />
<div align="center">
<button type="submit" class="btn btn-primary">Add Chore</button>
</div>
</form>
{% endblock %}
谢谢你的回复,现在我知道了lol。我刚刚删除了我的数据库并重新启动了。我知道这对于实际项目来说不是一个好主意,但下次我会使用你的答案
第一个想法:您的类定义不包含对tablename的赋值。我认为这是必要的。该属性必须包含数据库中定义的表名
如果这没有帮助,您可以显示创建数据库的代码
相关问题 更多 >
编程相关推荐