声明基数:
Base = declarative_base()
Base.query = Session.query_property()
Run Code Online (Sandbox Code Playgroud)
班级:
class Cheat(Base):
__tablename__ = 'cheats'
id = Column(Integer, primary_key = True, autoincrement = True)
cheat = Column(Text)
name = Column(String(255), index = True)
_html = Column('html', Text)
_slug = Column('slug', String(255))
@hybrid_property
def html(self):
return self._html
@html.setter
def set_html(self, md):
from markdown import markdown
self._html = markdown(md)
@hybrid_property
def slug(self):
return self._slug
@slug.setter
def set_slug(self, name):
self._slug = slugify(name)
def __init__(self, name, cheat):
self.name = name
self.slug = name
self.cheat = cheat
self.html = cheat
def __repr__(self):
return "Cheat<%s>" % self.name
Run Code Online (Sandbox Code Playgroud)
现在我可以从骗子那里得到一切:
Cheat.query.all()
Run Code Online (Sandbox Code Playgroud)
和SQLAlchemy将生成类似于的SQL语句:
SELECT name, slug, cheat, html FROM cheats
但我希望我的SQL语句是:
SELECT name, slug FROM cheats
所以我需要指定要检索的列,因为我不需要通过网络从数据库中提取大量文本.我怎么做?
将它们定义为延迟,然后只有在访问它们时才会获取它们
from sqlalchemy.orm import deferred
class Cheat(Base):
__tablename__ = 'cheats'
id = Column(Integer, primary_key = True, autoincrement = True)
cheat = deferred(Column(Text))
name = Column(String(255), index = True)
_html = Column('html', Text)
_slug = deferred(Column('slug', String(255)))
Run Code Online (Sandbox Code Playgroud)
小智 5
for name, slug in session.query(Cheat.name, Cheat.slug):
print name, slug
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1052 次 |
| 最近记录: |