[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