Pycharm警告SqlAlchemy模型中的意外类型

时间:2011-07-04 17:28:49

标签: python sqlalchemy pycharm

在SqlAlchemy模型中,我收到来自pycharm的警告,指出列具有意外类型。

产生警告的简化代码如下:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String

Base = declarative_base()

class Peptide(Base):
    __tablename__ = 'peptides'

    sequence = Column(String, primary_key=True)
    scan = Column(Integer)

    def __init__(self, scan, sequence):
        self.scan = scan
        self.sequence = sequence

    def __repr__(self):
        return '<Peptide "%s" Scan %i>' % (self.sequence, self.scan)

self.scan方法中为__repr__发出了警告。 如果我将格式字符串更改为:

  return '<Peptide "%s" Scan %s>' % (self.sequence, self.scan)

警告消失了。但实际上self.scan已被定义为模型中的整数,而不是字符串。令人惊讶的是,以下字符串不会产生任何警告:

  return '<Scan %i>' % self.scan

这是pycharm检查程序的过度反应还是与SqlAlchemy类型有关?

1 个答案:

答案 0 :(得分:6)

目前PyCharm并不知道SQLAlchemy ORM约定,因此通常它不知道模型字段的真实类型。如果您想在PyCharm中获得对SQLAlchemy的特别支持,请随时在PyCharm问题跟踪器中投票PY-4186

更新:PY-4536于2013年修复。如下所述,如果您使用Mixins仍有问题,请参阅PY-12002