2011-07-04 26 views
5

SqlAlchemy modelinde, bir sütunun beklenmedik bir türü olduğunu söyleyerek pycharm'dan uyarı alıyorum.Pycharm, SqlAlchemy modelinde Beklenmeyen bir tür konusunda uyarıyor

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) 

uyarı __repr__ yöntemde self.scan için verilen aşağıdaki gibidir:

uyarı üretir basitleştirilmiş bir koddur. Ben biçim dizesi değiştirirseniz:

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

uyarı uzağa gider. Fakat aslında self.scan, bir dizge değil modelde bir tamsayı olarak tanımlanmıştır.

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

bu pycharm denetleyicisinin aşırı tepki mi, yoksa sqlalchemy türlerine şey ilgilidir: Şaşırtıcı aşağıdaki dize herhangi bir uyarı üretmez?

+0

Django – velis

cevap

6

Şu anda PyCharm, SQLAlchemy ORM sözleşmelerinden habersizdir, bu yüzden genellikle gerçek model alan türlerini bilmez. PyCharm'da SQLAlchemy için özel destek almak isterseniz, PyCharm issue tracker'da PY-4186 numaralı konu için oy vermekten çekinmeyin.

Güncelleştirmesi: PY-4536, 2013'te giderilmiştir. Aşağıdaki sözlerden de anlaşılacağı gibi, Mixins kullanıyorsanız, hala bir sorun var, bkz. PY-12002.

+1

'da aynı şeyi alıyorum Şu anda, "x = User (first_name = 'foo', last_name = 'bar') kullanarak yeni bir varlık oluştururken" Beklenmeyen argüman "hakkında bir sürü uyarı alıyorum. örneğin. Bunun nedeni, her iki kwar'ın sadece '__init__' geçersiz kılınmış sütunlar olarak tanımlanmasıdır. Ve bu pankreas 5.0.1 üzerinde. Bu gelecekte desteklenecek mi? – exhuma

+0

@exhuma Lütfen PyCharm'ın [issue tracker] (https://youtrack.jetbrains.com/issues/PY) adresine bir hata yazıp bir kod örneği verin. –

+1

Bir kod örneği oluşturmak, bunun bir karışımdan dolayı olduğunu fark ettim. Uygun sorunu bulundu ([PY-12002] (https://youtrack.jetbrains.com/issue/PY-12002)). – exhuma