gpt4 book ai didi

python - 在 sqlalchemy 表中标记列

转载 作者:行者123 更新时间:2023-11-28 17:43:08 25 4
gpt4 key购买 nike

我想将自定义属性“可搜索”添加到 sqlalchemy 模型中的列。目的是仅提取这些列的数据(使用 ModelFoo.__ table__.columns)并将数据放入 solr。有没有一种方法可以使用自定义属性标记某些列?

class ModelFoo(AppBase):
__tablename__ = 'foo'
id = Column("id", Integer, primary_key=True, autoincrement=True)
os = Column(String, nullable=False, searchable=True)
platform = Column(String, searchable=True)

默认情况下,当我尝试上述操作时出现以下错误:

sqlalchemy.exc.ArgumentError: Unknown arguments passed to Column: ['searchable']

我正在寻找一种仅向 solr 添加“可搜索”列的通用方法,大致如下:

for table in Base.metadata.tables.values():
keys = [str(key) for key in table.columns if key.searchable]
solr.add(session.query(*keys).all())

在上面的代码中,我正在寻找一些简短的解决方案或替代方案来让“key.searchable”工作。希望这能澄清问题。

最佳答案

我在模型中使用一个单独的属性解决了这个问题:

class ModelFoo(Base):
__tablename__ = 'foo'
id = Column("id", Integer, primary_key=True, autoincrement=True)
os = Column(String, nullable=False)
platform = Column(String)
search_cols = ["os", "value"]

for k, v in list(Base._decl_class_registry.items()):
if (hasattr(v, "search_cols")):
cols = [getattr(v, val) for val in v.search_cols]
query = sess.query(*cols)
solr.add(query.all())

关于python - 在 sqlalchemy 表中标记列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21850700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com