en esa linea estoy investigando. Mi problema va un poco mas lejos. Me gustaria ser capaz de poder gestionar un numero arbitrario de tablas (todas con el mismo 'schema'). En otras palabras, necesitaria un numero indefinido de clases, cada una con un nombre diferente (que luego sera, siguiente ese ejemplo, el nombre de la tabla). Estoy intentando combinar el ejemplo de la doc usando declared_attr con lo [poco] que se de factorias de clases.
Muchas gracias, Jose El 26 de septiembre de 2012 03:19, Marcos Sánchez Provencio < ra...@arrakis.es> escribió: > 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 > listPython-es@python.orghttp://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > > > _______________________________________________ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > >
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/