2011-07-04 18 views
5

Trong mô hình SqlAlchemy, tôi nhận được cảnh báo từ pycharm nói rằng cột có loại không mong muốn.Pycharm cảnh báo về kiểu không mong đợi trong mô hình SqlAlchemy

Mã đơn giản mà tạo ra cảnh báo như sau:

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) 

Cảnh báo được đưa ra cho self.scan trong phương pháp __repr__. Nếu tôi thay đổi chuỗi định dạng thành:

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

cảnh báo biến mất. Nhưng trên thực tế self.scan đã được định nghĩa là một số nguyên trong mô hình, không phải là một chuỗi. Đáng ngạc nhiên là chuỗi sau không xuất hiện bất kỳ cảnh báo nào:

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

Đây có phải là sự phản ứng quá mức của bộ kiểm tra kim loại hoặc liên quan đến các loại SqlAlchemy không?

+0

Tôi đang nhận được giống nhau ở Django – velis

Trả lời

6

Hiện tại PyCharm không biết về các quy ước của SQLAlchemy ORM, vì vậy thường thì nó không biết các loại trường mô hình thực. Nếu bạn muốn nhận hỗ trợ đặc biệt cho SQLAlchemy trong PyCharm, vui lòng bỏ phiếu cho vấn đề PY-4186 trong trình theo dõi vấn đề PyCharm.

Cập nhật: PY-4536 đã được sửa vào năm 2013. Vì những nhận xét được đề cập bên dưới vẫn có vấn đề nếu bạn sử dụng Mixins, xem PY-12002.

+1

Tôi hiện đang nhận được một loạt các cảnh báo về "Đối số không mong muốn", khi tạo một thực thể mới bằng cách sử dụng 'x = Người dùng (first_name = 'foo', last_name = 'bar') 'ví dụ. Tôi cho rằng điều này là do cả hai kwarg chỉ được định nghĩa là các cột không có '__init__' bị ghi đè. Và đây là trên pycharm 5.0.1. Điều này có được hỗ trợ trong tương lai không? – exhuma

+0

@exhuma Vui lòng gửi một lỗi về nó đến [issue tracker] (https://youtrack.jetbrains.com/issues/PY) của PyCharm và cung cấp một ví dụ về mã. –

+1

Tạo một ví dụ mã, tôi nhận ra đó là do một mixin. Đã tìm thấy sự cố thích hợp ([PY-12002] (https://youtrack.jetbrains.com/issue/PY-12002)). – exhuma

Các vấn đề liên quan