Creo que lo que quieres es declared_attr

De la docu, un ejemplo de uso:

from  sqlalchemy.ext.declarative  import  declared_attr

class  MyMixin(object):

    @declared_attr
    def  __tablename__(cls):
        return  cls.__name__.lower()

    __table_args__  =  {'mysql_engine':  'InnoDB'}
    __mapper_args__=  {'always_refresh':  True}

    id  =   Column(Integer,  primary_key=True)

class  MyModel(MyMixin,  Base):
    name  =  Column(String(1000))




El 25/09/12 16:20, Jose Caballero escribió:
Hola,


SQLAlchemy 0.7.8-1
python 2.4


Si hago algo como lo siguiente [1] todo funciona perfectamente. Luego puedo crear la tabla en la DB con el nombre "table1", y puedo interaccionar con ella. Lo que quisiera hacer es que el nombre de la tabla fuese un parametro. Pero si hago algo como [2], al intentar usar la clase (para salvar un objeto session, por ejemplo) obtengo este mensaje de error [3]. Estoy intentando investigar por que, pero si alguien mientras tanto me da una pista, todo comentario sera bien recibido.


Muchas gracias por adelantado.
Jose
(perdon por la ausencia de tildes)


-------------------------------------------------------------------------------------------------------
[1]


Base = declarative_base()
class Foo(Base):
    __tablename__ = "table1"
    id = Column(Integer, primary_key=True)
    var1 = Column(String)
    var2 = Column(String)

-------------------------------------------------------------------------------------------------------
[2]

Base = declarative_base()
def createFoo(tablename):
    class Bar(Base):
       __tablename__ = tablename
       id = Column(Integer, primary_key=True)
       var1 = Column(String)
       var2 = Column(String)
    return Bar


Foo = createFoo('table1')

-------------------------------------------------------------------------------------------------------
[3]

sqlalchemy.exc.OperationalError: (OperationalError) no such table: table1 u'INSERT INTO table1 (var1, var2) VALUES (?, ?)' ('blah', 'blah')




_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a