2010-07-11 6 views
7

Código replicar el error:¿Por qué los métodos de sesión están libres en sqlalchemy usando 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() 

de ejecutar este código se obtiene:

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) 

Estoy 95% seguro de que el nombre del archivo no es el tema que puedo conectar con él de la cáscara

alguna idea?

Respuesta

12

El valor de retorno de sessionmaker()is a class. Necesita crear una instancia antes de usar métodos en la instancia.

+0

Oh, me lo perdí. Gracias. Deseando poder votarte – aaronasterling

+0

@ignacio - ¿Cómo harías eso con este código específico? –

+0

@Jay: De la misma manera que instanciar cualquier clase en Python. –

Cuestiones relacionadas