【发布时间】:2021-10-18 20:45:20
【问题描述】:
我正在尝试在我的 Flask Web 应用程序(托管在 PythonAnywhere)上运行 SQLAlchemy 查询,但我被困住了 - 我是 SQLAlchemy 的新手,并试图四处寻找答案并尝试了一些不同的解决方案,但是没有任何效果。
这是初始设置:
from flask import Flask, redirect, render_template, request, url_for 从 flask_sqlalchemy 导入 SQLAlchemy from flask_login import login_required, login_user, LoginManager, logout_user, UserMixin, current_user 从 werkzeug.security 导入 check_password_hash,generate_password_hash 导入请求 导入 urllib.parse
app = Flask(__name__)
app.config["DEBUG"] = True
SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://{username}:{password}@{hostname}/{databasename}".format(
username="****",
password="****",
hostname="****",
databasename="****",
)
app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI
app.config["SQLALCHEMY_POOL_RECYCLE"] = 299
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)
app.secret_key = "58f5x^G!S8q8p6MZDRHa"
login_manager = LoginManager()
login_manager.init_app(app)
[...]
class Portfolio(db.Model):
__tablename__ = "portfolio"
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
symbol = db.Column(db.String(32))
quantity = db.Column(db.Integer)
user = db.Column(db.String(32))
我正在尝试运行查询 - 第一部分有效,在第二部分中我尝试通过表格中给出的符号过滤表格(我将其设为“NFLX”只是为了查看查询本身是否会工作)检查该条目是否已经存在 - 目的是根据 curr_portfolio 是否为无/空来具有不同的行为。
# add transaction to Transaction database
transaction = Transaction(symbol=request.form["symbol"], quantity=request.form["shares"], totalvalue=cost, user="admin")
db.session.merge(transaction)
db.session.commit()
# add transaction to Portfolio database
symbol=(request.form.get("symbol")
curr_portfolio = session.query(Portfolio.symbol).filter(symbol="NFLX").all()
return redirect(url_for('dashboard'))
任何指针都非常感谢!
【问题讨论】:
-
乍一看,我相信你应该使用
symbol == 'NLFX'而不是单个等号。 -
谢谢,我都试过了,因为不确定这是否是问题,但不幸的是都不起作用
-
实际问题是什么?你有错误吗?还是不是您想要的结果?
-
啊,我看到了另一件奇怪的事情:您没有将 SQLAlchemy 字段与值进行比较,而是将表单中的输入值与字符串“NLFX”进行比较。也尝试将过滤器更改为
.filter(Portfolio.symbol == symbol) -
@noslenkwah 我在展示的示例中遇到语法错误,使用其他解决方案我根本没有得到任何结果(即使我知道查询应该是一行)
标签: python flask sqlalchemy flask-sqlalchemy pythonanywhere