¿No te faltará crear la tabla?

Un codigo de ejemplo.

from sqlalchemy.orm import sessionmaker, relationship, backref

engine = create_engine('sqlite:///:memory:', echo=True)
metadata = MetaData()
metadata.bind = engine
Session = sessionmaker(bind=engine)

from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
Base.metadata = metadata


Luis Fernando Barrera
lfbarrer...@gmail.com


2012/9/26 miguel zamora m. <mzmp...@gmail.com>

> quiza te sirva un poco de codigo para poder compara y tomar ideas
>
> te dejo esta pagina donde en un proyecto que me toco ver en su minuto
> me ayudo mucho
>
> http://nullege.com/
>
>
> http://nullege.com/codes/show/src%40d%40b%40dbcook-HEAD%40trunk%40dbcook%40usage%40example%40example1.py/11/sqlalchemy/python
>
>
> ademas esta doc esta bastante bien
>
> http://www.cafepy.com/article/python_attributes_and_methods/
>
>
> http://www.cafepy.com/article/python_attributes_and_methods/python_attributes_and_methods.pdf
>
>
>
>
>
>
>
>
>
>
> El día 26 de septiembre de 2012 10:37, Jose Caballero
> <jcaballero....@gmail.com> escribió:
> > 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 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/
> >>
> >
> >
> > _______________________________________________
> > Python-es mailing list
> > Python-es@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
> mzmp...@gmail.com
> Santiago-Chile
> _______________________________________________
> 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/

Responder a