Попытка использовать float () в column_property - PullRequest
2 голосов
/ 11 октября 2011

Я пытаюсь преобразовать столбец в число с плавающей точкой при назначении столбца с помощью column_property:

class voteinfo(Base):
    __tablename__ = 'voteinfo'
    id = Column(Integer, primary_key=True)
    upvotes = Column(Integer)
    downvotes = Column(Integer)
    controversial = column_property(float(upvotes - downvotes)/(abs(upvotes + downvotes)+1)

    def __init__(self, upvotes, downvotes):
        self.upvotes = upvotes
        self.downvotes = downvotes

Однако, когда я запускаю это, я получаю следующую ошибку:

TypeError: float() argument must be a string or a number

Есть ли лучший способ сделать это?Я использую column_property, потому что я хочу иметь возможность сортировать по спорным.

1 Ответ

3 голосов
/ 11 октября 2011

Из документов sqlalchemy лучший способ сделать это - определить питона @property. Вам также необходимо использовать встроенный тип sqlalchemy float.

from sqlalchemy.types import Float

class voteinfo(Base):
    __tablename__ = 'voteinfo'
    id = Column(Integer, primary_key=True)
    upvotes = Column(Integer)
    downvotes = Column(Integer)

    @property
    def controversial(self):
        return Float(self.upvotes - self.downvotes)/Float(abs(self.upvotes + self.downvotes)+1)


    def __init__(self, upvotes, downvotes):
        self.upvotes = upvotes
        self.downvotes = downvotes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...