python - 烧瓶操作错误:没有这样的列
问题描述
我想用烧瓶创建一个网站,它有一个带有链接的表格,用户用 html 表单放在那里。
from flask import Flask, render_template, request, redirect
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///home.db'
db = SQLAlchemy(app)
class links(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(30), nullable=True)
title = db.Column(db.String(30), nullable=False)
link = db.Column(db.String(200), nullable=False)
date_added = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
def __repr__(self):
return f'<link {self.id}>'
@app.route('/home', methods=['GET', 'POST'])
def home ():
if request.method == 'POST':
link_name = request.form["name"]
link_title = request.form["title"]
link_link = request.form["link"]
new_link = links(name=link_name, title=link_title, link=link_link)
try:
db.session.add(new_link)
db.session.commit()
return redirect('/home')
except:
return 'there was a problem'
else:
li = links.query.order_by(links.date_added).all()
return render_template('home.html', li=li)
if __name__ == "__main__":
app.run(debug=True)
我不断收到此错误消息,
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) 没有这样的列:links.name
它说它在这一行:
li = links.query.order_by(links.date_added).all()
我在互联网上做了一些研究,但我没有找到任何东西......我该如何解决这个问题?
解决方案
看起来您还没有创建 sqlite 文件,如果您在项目目录中看到并且没有看到“home.db”文件,那就是它。
然后打开 python 终端并执行以下操作:
在环境文件夹中使用 CMD:
>>> from app import db >>> db.create_all() >>> exit() #or ctrl + z then enter
笔记
如果您已经看到名为 'home.db' 的文件被删除并再次运行上述代码,这是因为您可能已经创建了该文件,但随后添加了 'name = db.Column(db.String(30), nullable=True)' 之后。
如果上面提到的没有解决问题,那么检查你的代码行:
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///home.db'
> 对此:
导入操作系统
app = Flask(__name__)
basedir = os.path.abspath(os.path.dirname(__file__))
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'+os.path.join(basedir, 'data.sqlite')
然后当然运行代码。还记得每次进行更改时删除文件“home.db”
推荐阅读
- wordpress - 有没有办法查看谁在 Wordpress 中将页面从已发布页面更改为私有页面?
- python - 在 PyQt5 中将变量与“self”连接起来
- c++ - 在 C++ 中将 char 数组读取为浮点数组,而无需使用 memcpy 复制它
- typescript - 从接口获取`__typename`
- c# - 我有两种不同的形式,我需要一个可以在两种形式下工作的全局变量
- webpack - webpack 多编译器无法编译第二个入口点
- javascript - 从 swal 库中增加文本元素
- php - 在 WooCommerce 中将基于 ACF 字段的折扣应用于购物车总数
- javascript - 在 React 中使用鼠标滚轮缩放图像
- c - 如何结束字符串提示的循环?