La version que j'ai essayée.
In [1]: import sqlalchemy
In [2]: sqlalchemy.__version__
Out[2]: '1.0.5'
Si vous passez des métadonnées ou un moteur à sqlalchemy.Table ()
, vous pouvez obtenir l'objet Table
qui peut être passé à la session tel quel.
Faites un dict de {<nom de la table>: sqlalchemy.Table}
et placez-le dans une large zone du module.
dbs.py
# -*- coding: utf-8 -*-
import sqlalchemy
import sqlalchemy.ext.declarative
Base = sqlalchemy.ext.declarative.declarative_base()
url = 'mysql://[email protected]/employees?charset=utf8'
engine = sqlalchemy.create_engine(url, echo=False)
tables = { name: sqlalchemy.Table(name, Base.metadata, autoload=True, autoload_with=engine)
for name in engine.table_names()
}
globals().update(tables)
Session = sqlalchemy.orm.sessionmaker(bind=engine)
session = Session()
ʻEmployees` Récupère tous les enregistrements de la table. (Mon exemple mysql)
select.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import dbs
for x in dbs.session.query(dbs.employees):
print x
TODO: Vous voudrez peut-être l'exporter sous la forme d'une classe statique.
Vous pouvez dynamiquement lécher la table et la recracher comme ça.
Une telle forme
class Student(Base):
__tablename__ = 'students'
id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
name = sqlalchemy.Column(sqlalchemy.String(255))
kana = sqlalchemy.Column(sqlalchemy.String(255))
def __repr__(self):
return '<name=%s, kana=%s>' % (self.name, self.kana)
Recommended Posts