0

SQLalchemy を使用するのはこれが初めてです。ニュースレター クラス/テーブルを作成しました。

class Newsletter(Base):
    __tablename__ = 'newsletter'

    email = Column(String(255), primary_key=True)
    timestamp = Column(DateTime(timezone=False), default=datetime.utcnow,
                       server_default=expression.func.now())

    def __repr__(self):
        return '''<Newsletter('{email}', registered on: '{date}')>
               '''.format(email=self.email,
                          date=self.timestamp)

if__name__=='__main__':
    foobar = Newsletter('foobar@gmail.com')

しかし、このエラーを受け取りました:

TypeError: init () は正確に 1 つの引数を取ります (2 つ指定)

完全なコード: http://dpaste.com/1313680

以前は機能していましたが、機能させるためにさまざまな変更を試みました。無駄に。

4

1 に答える 1

1

__init__1 つの引数のみを許可する基本クラスからメソッドを継承していますself。クラスを変更したい場合があります。

class Newsletter(Base):
    __tablename__ = 'newsletter'

    email = Column(String(255), primary_key=True)
    timestamp = Column(DateTime(timezone=False), default=datetime.utcnow,
                       server_default=expression.func.now())

   def __init__(self, email):
       self.emailID = email

    def __repr__(self):
        return '''<Newsletter('{email}', registered on: '{date}')>
               '''.format(email=self.email,
                          date=self.timestamp)

編集- クラス内でコンストラクターを作成する代わりにNewsLetter、関数をに渡すことができますdeclarative_base

コツをつかんだら、コンストラクターを渡すには、関数を定義する必要があります。

def constructorFunc(self, email):
    self.emailID = email

次に、ただ行うBase = declarative_base(constructor = constructorFunc)

于 2013-07-22T17:04:03.533 に答える