gpt4 book ai didi

python - SQLALchemy 查询 : Unresolved attribute reference 'query' for class 'Car'

转载 作者:行者123 更新时间:2023-12-04 08:20:43 32 4
gpt4 key购买 nike

我有一个问题已经在这里提到了 https://youtrack.jetbrains.com/issue/PY-44557

但是我还没有找到解决办法。我将 Python Flask 与 SQLAlchemy 结合使用来创建 API 服务。

这是我的导入:

from flask import Flask, jsonify, request
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import Column, Integer, String, Float
import os
from flask_marshmallow import Marshmallow


app = Flask(__name__)
basedir = os.path.abspath(os.path.dirname(__file__))
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'+os.path.join(basedir, 'dealers.db')


db = SQLAlchemy(app)
ma = Marshmallow(app)

这是我的数据模型:

class Car(db.Model):
__tablename__ = 'cars'
car_id = Column(Integer, primary_key=True)
car_name = Column(String)
car_type = Column(String)


class CarSchema(ma.Schema):
class Meta:
fields = ('car_id', 'car_name', 'car_type')

car_schema = CarSchema()
cars_schema = CarSchema(many=True)

当我使用 .query 时,我的 UDF 出现问题/警告

def cars():
car_list = Car.query.all() # *Unresolved attribute reference 'query' for class 'Car'
result = cars_schema.dump(car_list)
return jsonify(result)

最佳答案

我已经找到了如何使用 type-hinting stubs 为这个问题制定一个 hacky 和部分解决方案。 .

在单独的文件和同名的“ stub ”文件中创建从 db.Model 派生的抽象 python 类

例子:

抽象.py:

class AbstractBaseModel(db.Model):
__abstract__ = True

抽象.pyi:

from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import orm
from sqlalchemy.ext.declarative import DeclarativeMeta


db: SQLAlchemy = SQLAlchemy()


class _FBase(db.Model):
query: orm.Query


class AbstractBaseModel(_FBase, DeclarativeMeta):
...

然后从 abstract.AbstractBaseModel 而不是 db.Model 派生模型例如:

from abstract import AbstractBaseModel

class Car(AbstractBaseModel):
__tablename__ = 'cars'
car_id = Column(Integer, primary_key=True)
car_name = Column(String)
car_type = Column(String)

我还创建了一个 sample project用于测试此解决方法

关于python - SQLALchemy 查询 : Unresolved attribute reference 'query' for class 'Car' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65513237/

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