gpt4 book ai didi

sql - Flask 和 SQLAlchemy 不工作((OperationalError)没有这样的表 :)

转载 作者:行者123 更新时间:2023-12-03 15:51:33 26 4
gpt4 key购买 nike

我正在尝试使用 SQLAlchemy 使用 Flask 设置 SQL 数据库。我在 this github page 上的示例之后为我的代码建模,但我似乎无法让它工作。

我不断收到以下错误:

sqlalchemy.exc.OperationalError: (OperationalError) no such table: user u'INSERT INTO user (username, email) VALUES (?, ?)' ('test', 'test@gmail.com')

这是我的代码:
from flask import Flask, render_template, request, url_for, request, redirect
from flask.ext.sqlalchemy import SQLAlchemy
import sqlite3
import os

app = Flask(__name__)
sqlite3.connect(os.path.abspath("test.db"))
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///test.db"

db = SQLAlchemy(app)

class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)

def __init__(self, username, email):
self.username = username
self.email = email
def __repr__(self):
return "<User %r>" % self.username

x = User("test", "test@gmail.com")
db.session.add(x)
db.session.commit()
@app.route("/")
def index():
return User.query.all()

if __name__ == "__main__":
init.db()
app.run(debug=True)

我知道错误与每个 session 有关,但我有点困惑,因为给出的示例从未明确初始化 session 。

最佳答案

Python 解析您的文件并执行每一行(我猜它更复杂,但无论如何)。所以它到达以下行(在 if __name__ == "__main__": ... 之前执行 :

db.session.commit()

它尝试添加用户 x到数据库。但是数据库/表还不存在,因为您尝试在几行之后通过调用 init.db() 创建它。 ,顺便说一句,这是错误的。什么是init ?它没有在您的代码中定义。

请阅读 this 仔细再次

您的代码应该如下所示:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///test.db"

db = SQLAlchemy(app)

class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)

def __init__(self, username, email):
self.username = username
self.email = email

def __repr__(self):
return "<User %r>" % self.username

@app.route("/")
def index():
return User.query.all() # I don't think this will work

if __name__ == "__main__":
db.create_all()

x = User("test", "test@gmail.com")
db.session.add(x)
db.session.commit()

app.run(debug=True)

请注意 db.create_all()如果数据库已经存在,将失败并崩溃。看看Flask-Script .它可以帮助您为应用程序build设置脚本。

关于sql - Flask 和 SQLAlchemy 不工作((OperationalError)没有这样的表 :),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17636434/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com