我正在开发一个 Web 应用程序并尝试从 Spyder 迁移到 VS Code。 它使用默认解释器,因此我创建了一个新的 venv,但是当我启动服务器时,它无法使用与没有 venv 时相同的代码。 错误描述:
File "C:\Users\User\Desktop\Flask\app.py", line 77, in index
measurement_mx = rs.all()
AttributeError: 'ResultProxy' object has no attribute 'all'
我使用
pip install -r requirements.txt
安装了完全相同的依赖项。
你能帮我解决这个问题吗,不幸的是我找不到这个问题。
相关代码片段:
@app.route('/', methods=['POST', 'GET'])
def index():
with engine.connect() as con:
rs = con.execute(SQL_string)
measurement_mx = rs.all() #this is the error line
measurement_list = []
for row in measurement_mx:
measurement_list.append(row._data)
measurement_list = transpose(measurement_list)
return render_template('index.html', measurement_list=measurement_list )
提前谢谢您!
问题可能是您的
requirements.txt
文件可能指定要安装哪些软件包,但没有指定其确切版本,所以可以吗:
一些想法:
lock
文件进行安装,例如参见 关于 pip.lock
文件的讨论)现在,关于您的确切问题:
ResultProxy
不是来自flask
的对象,而是来自SQLAlchemy
的对象,SQLAchemy v1.4替换了:
类 sqlalchemy.engine.Result(cursor_metadata)
表示一组数据库结果。
1.4 版本中的新增功能:Result 对象为 SQLAlchemy Core 和 SQLAlchemy ORM 提供了完全更新的使用模型和调用外观。在 Core 中,它构成了 CursorResult 对象的基础取代了之前的 ResultProxy 接口。使用 ORM 时,通常使用称为 ChunkedIteratorResult 的更高级别对象。
(强调我的)
这意味着您可以:
SQLAlchemy
文件中的 requirements.txt
版本,SQLAlchemy
语法。