在 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)
警告是在 __repr__
方法中针对 self.scan
给出的。
如果我将格式字符串更改为:
return '<Peptide "%s" Scan %s>' % (self.sequence, self.scan)
警告消失。但实际上self.scan在模型中已经被定义为一个整数,而不是一个字符串。令人惊讶的是,以下字符串不会产生任何警告:
return '<Scan %i>' % self.scan
这是 pycharm 检查器 react 过度还是与 SqlAlchemy 类型有关?
最佳答案
目前 PyCharm 不了解 SQLAlchemy ORM 约定,因此通常它不知道模型字段的真实类型。如果您想在 PyCharm 中获得对 SQLAlchemy 的特殊支持,请随时为问题投票 PY-4186在 PyCharm 问题跟踪器中。
更新:PY-4536 已于 2013 年修复。正如下面的评论所述,如果您使用 Mixins,仍然存在问题,请参阅 PY-12002 .
关于python - Pycharm 警告 SqlAlchemy 模型中出现意外类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6574446/