0

这是我第一次使用 SQLalchemy。我创建了一个 Newsletter 类/表:

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__从只允许一个参数的基类继承方法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 回答