[Python-es] SQLAlchemy: problema para intentar crear clases con valor de __tablename__ como argumento
miguel zamora m.
mzmprog en gmail.com
Mar Sep 25 22:37:01 CEST 2012
Algo como esto quiza te ayude
from sqlalchemy import *
from sqlalchemy.orm import *
class Persist:
def __init__(self):
self.url = "mysql://root:123456@localhost/database"
self.db = create_engine(self.url)
self.metadata = MetaData(bind=self.db, reflect=True)
self.db.echo = False
def obtenemosTabla(self,nombreTabla):
tabla = self.metadata.tables[nombreTabla]
return tabla
El día 25 de septiembre de 2012 10:20, Jose Caballero
<jcaballero.hep en gmail.com> 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
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
--
Miguel Zamora M.
Programador en Computacion e Informatica
08-1351249
mzmprog en gmail.com
Santiago-Chile
Más información sobre la lista de distribución Python-es