我很新闻,并试图自己建立一个博客,我遇到了SQLite操作错误的问题.我已经在Github和Stackoverflow上研究了类似的问题,但是在我发现的问题中没有出现典型的拼写错误或错误.如果有人能帮助我,那将是非常感激和非常好的,因为这个问题就像杀了我一样已经花了我两天,我觉得非常糟糕.
在代码中我已经定义了表名为"users_table"并在开头运行"db.create_all()"来创建表,但是每次提交时都会出现"没有这样的表user_table"的错误更新用户信息.
这是我测试SQLite操作的方法:
(under /project) python3 manage.py shell
>>> u = User(email='foo@bar.com', username='foobar', password='player')
>>> db.create_all()
>>> db.session.add(u)
>>> db.session.commit() # with following error message
Traceback (most recent call last):
File "C:\...\Python\Python36-32\lib\site-packages\sqlalchemy\engine\base.py", line 1182, in _execute_context
context)
File "C:\...\Python\Python36-32\lib\site-packages\sqlalchemy\engine\default.py", line 470, in do_execute
cursor.execute(statement, parameters)
sqlite3.OperationalError: no such table: users_table
...
...
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: users_table
Run Code Online (Sandbox Code Playgroud)
我已将代码最小化为以下四个部分,这可能会重现错误消息:
/project/app/__init__.py:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from config import config
db = SQLAlchemy()
def create_app(config_name):
app = Flask(__name__) …Run Code Online (Sandbox Code Playgroud) 我得到以下错误sqlalchemy.exc.OperationalError:(sqlite3.OperationalError)没有这样的表:s_amodel [SQL:'INSERT INTO s_amodel
我的文件
from flask_wtf import Form
class SAForm(Form):
Run Code Online (Sandbox Code Playgroud)
....
from app.app_and_db import db
class SAmodel(db.Model):
id = db.Column(db.Integer(), primary_key=True)
Run Code Online (Sandbox Code Playgroud)
from app.app_and_db import app, db
from app.sa.forms import SAForm
from app.sa.models import SAmodel
@sa_blueprint.route('/sa/new', methods=['GET','POST'])
def new_sa():
form = SAForm(request.form, SAmodel)
if request.method=='POST' and form.validate():
model = SAmodel()
form.populate_obj(model)
db.session.add(model)
db.session.commit()
return redirect(url_for("sa.home_page"))
return render_template("new_sa.html", form=form)
Run Code Online (Sandbox Code Playgroud)
SQLALCHEMY_DATABASE_URI = os.getenv('DATABASE_URL', 'sqlite:///app.sqlite')
Run Code Online (Sandbox Code Playgroud)
这就是我所拥有的.app.sqlite已创建,但它是0字节.当我使用new_sa()函数提交一些东西时,我得到了上面的错误.它是如何得到表名"s_amodel"的?
任何帮助将不胜感激.非常感谢!