尽管从相同的requirements.txt安装依赖项,但相同的代码在venv中不起作用

问题描述 投票:0回答:1

我正在开发一个 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 )

提前谢谢您!

python sqlalchemy python-venv requirements.txt
1个回答
3
投票

问题可能是您的

requirements.txt
文件可能指定要安装哪些软件包,但没有指定其确切版本,所以可以吗:

  • 粘贴您的需求文件的内容?
  • 检查两个虚拟环境之间的软件包版本?

一些想法:

现在,关于您的确切问题:

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
    语法。
© www.soinside.com 2019 - 2024. All rights reserved.