gpt4 book ai didi

Python/SQLalchemy - 如何触发查询?

转载 作者:行者123 更新时间:2023-11-30 23:44:08 29 4
gpt4 key购买 nike

我正在努力让 SQLalchemy 通过 python 为我完成一些任务。

我可以通过以下示例让它工作,但我现在在从 for 循环中移动查询调用方面已经卡住了一段时间:

for instance in session.query(versions_table).filter(versions_table.c.version==Version):

并通过调用表结果之一获取结果:

 existingID = instance.id

(其中 id 是返回表的 PK)

我不能做的是找到一种随意触发查询的方法,或者作为条件语句的结果,例如

if some conditions met:
do query
get / process result

我只能通过调用instance.fieldname来获取返回值

任何人都可以指出我出错的地方,承认我对 SQLalchemy 函数的设置/调用方式并不是 100% 满意。

我想做的是:

for instance in session.query(versions_table).filter(versions_table.c.version==Version):
if instance.id == True: #this is not correct
print instance.id
else:
print "no match"

更完整的脚本:

from sqlalchemy import *
from sqlalchemy.orm import sessionmaker

engine = create_engine('mysql+mysqldb://u:p@localhost/sqlalchtest',
echo=False)

metadata = MetaData(bind=engine)
Session = sessionmaker(bind=engine)
versions_table = Table('versions', metadata, autoload=True)

def doVersionGet(sigfile_filename):
tree = etree.parse(sigfile_filename)
root = tree.getroot()
attributes = root.attrib
if 'DateCreated' in root.attrib:
DateCreated = (attributes["DateCreated"])
if 'Version' in root.attrib:
Version = (attributes["Version"])
doVersionPush(DateCreated,Version)

def doVersionPush(DateCreated,Version):
session = Session()
for instance in session.query(versions_table).filter(versions_table.c.version==Version):
existingID = instance.id
#this is not really what I want to do here any way, but this will fire the query every time

if __name__ == "__main__":
path = "location\sub_sig_files" ##home_subset for tests
for (path, dirs, files) in os.walk(path):
for file in files:
sigfile_filename = str(path)+"\\"+str(file)
doVersionGet(sigfile_filename)

最佳答案

您可以使用 Query.all 执行查询,它将执行查询并返回实例:

instances = session.query(versions_table).filter(versions_table.c.version==Version).all()

关于Python/SQLalchemy - 如何触发查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10276011/

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