sqlalchemy.exc.OperationalError:(sqlite3.OperationalError)没有这样的表:

2024-05-16 23:58:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为我的家人构建一个杂务应用程序,当我尝试添加杂务时,它会出现以下错误“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">&times;</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 %}

Tags: fromimportiddblogincolumnbuttoncurrent
2条回答

谢谢你的回复,现在我知道了lol。我刚刚删除了我的数据库并重新启动了。我知道这对于实际项目来说不是一个好主意,但下次我会使用你的答案

第一个想法:您的类定义不包含对tablename的赋值。我认为这是必要的。该属性必须包含数据库中定义的表名

如果这没有帮助,您可以显示创建数据库的代码

相关问题 更多 >