python - SQLAlchemy 声明式。指定要选择的列

标签 python sqlalchemy

声明基础:

Base = declarative_base()
Base.query = Session.query_property()

类(class):

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

现在我可以从秘籍中获得一切:

Cheat.query.all()

SQLAlchemy 会生成类似如下的 SQL 语句:

SELECT name, slug, cheat, html FROM cheats

但我希望我的 SQL 语句是:

SELECT name, slug FROM cheats

所以我需要指定要检索的列,因为我真的不需要通过网络从数据库中提取大量文本。 我该怎么做?

最佳答案

将它们定义为 deferred , 然后它们只会在被访问时被获取

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)))

关于python - SQLAlchemy 声明式。指定要选择的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10387697/

相关文章:

python - 未插入sqlalchemy查询参数

python - 手动定义聚类中心

python - App.yaml - 单个 URL 服务多个静态目录

python - SQLAlchemy 自动增量未正确插入

python - 无法使用 SQLAlchemy/Flask-SQLAlchemy 删除行

mysql - SQLAlchemy Session.commit() 挂起

postgresql - 在 SQLAlchemy 中设置 PostgreSQL 配置参数

python - 如何在 Keras 中使用创建的 CNN 模型和新数据

python - 查找不在两个数据框中的行

python - PyMongo 和 Flask-PyMongo 库之间的区别