python sqlAlchemy: получил InvalidRequestError после изменения местоположения класса
если я ставлю CapacityMin класс и unittest класс в том же .файл py, все нормально.
Но после того, как я перееду CapacityMin класса в отдельный файл, и запустить юнит-тест, я получил эту ошибку:
SQL-выражение, столбец или сопоставленный объект ожидаются
детали:
InvalidRequestError: SQL expression, column, or mapped entity expected - got '<module 'Entities.CapacityMin' from 'D:trunkAppServiceCommonEntitiesCapacityMin.pyc'>'
но это не есть хорошо.
CapacityMin.py:
import sqlalchemy
from sqlalchemy import *
from  sqlalchemy.ext.declarative  import  declarative_base
Base  =  declarative_base()
class  CapacityMin(Base):
    '''
    table definition:
        ID        INT NOT NULL auto_increment,
        Server    VARCHAR (20) NULL,
        FeedID    VARCHAR (10) NULL,
        `DateTime` DATETIME NULL,
        PeakRate  INT NULL,
        BytesRecv INT NULL,
        MsgNoSent INT NULL,
        PRIMARY KEY (ID)
    '''
    __tablename__  =  'capacitymin'
    ID  =  Column(Integer,  primary_key=True)
    Server  =  Column(String)
    FeedID  =  Column(String)
    DateTime  =  Column(sqlalchemy.DateTime)
    PeakRate = Column(Integer)
    BytesRecv = Column(Integer)
    MsgNoSent = Column(Integer)
    def __init__(self, server, feedId, dataTime, peakRate, byteRecv, msgNoSent):
        self.Server = server
        self.FeedID = feedId
        self.DateTime = dataTime
        self.PeakRate = peakRate
        self.BytesRecv = byteRecv
        self.MsgNoSent = msgNoSent
    def __repr__(self):
        return "<CapacityMin('%s','%s','%s','%s','%s','%s')>" % (self.Server, self.FeedID ,
                self.DateTime ,self.PeakRate,
                self.BytesRecv, self.MsgNoSent)
if __name__ == '__main__':
    pass
1 ответов
вы используете модуль, а не класс внутри модуля.
Я подозреваю, что вы используете его так:
from Entities import CapacityMin
в то время как вы намеревались использовать:
from Entities.CapacityMin import CapacityMin
такой путаницы является одной из причин того, что Python styleguide (PEP 8) рекомендует использовать строчные имена для ваших модулей; ваш импорт будет:
from entities.capacitymin import CapacityMin
и вашу ошибку было бы легче обнаружить.
