2010-07-11 32 views
7

代码复制错误:为什么会话方法在sqlalchemy中使用sqlite绑定?

from sqlalchemy import create_engine, Table, Column, Integer 
from sqlalchemy.ext.declarative import declarative_base 
from sqlalchemy.orm import sessionmaker 

Base = declarative_base() 

class Message(Base): 
    __tablename__ = 'messages' 

    id = Column(Integer, primary_key=True) 
    message = Column(Integer) 


engine = create_engine('sqlite:///' + filename_of_your_choice) 
session = sessionmaker(bind=engine) 

newmessage = Message() 
newmessage.message = "Hello" 

messages = session.query(Message).all() 

运行这段代码产生:

Traceback (most recent call last): 
    File "C:/aaron/test.py", line 20, in <module> 
    session.commit() 
TypeError: unbound method commit() must be called with Session instance as first argument (got nothing instead) 

我95%肯定的是,文件名不是问题,因为我可以从shell

连接到它

有什么想法?

回答

12

返回值从sessionmaker()is a class。您需要在实例上使用方法之前对其进行实例化。

+0

哦,我错过了。谢谢。希望我可以upvote你 – aaronasterling 2010-07-11 04:40:59

+0

@ignacio - 你将如何做到这一点与此特定的代码? – 2012-04-22 00:30:24

+0

@Jay:同样的方式我在Python中实例化任何类。 – 2012-04-22 00:39:04

相关问题