如何使用SQLalchemy创建WHERE子句以与字符串进行比较?

时间:2017-07-14 17:44:39

标签: python-3.x sqlalchemy flask-sqlalchemy

目的

我要做的就是从主键匹配的特定表中检索单个记录。我有一种感觉,因为它似乎是一项简单的任务,所以我非常复杂。我有一个理论,它可能不知道变量值,因为它实际上并没有从Python代码中提取它,而是试图在数据库中找到一个同名的变量。

编辑:我是否可能需要在表达式语句中包含where子句?

尝试

我的Python代码是

def get_single_record(name_to_search):
    my_engine = super_secret_inhouse_engine_constructor("sample_data.csv")
    print("Searching for " + name_to_search)
    statement = my_engine.tables["Users"].select().where(my_engine.tables["Users"].c.Name == name_to_search)

# Print out the raw SQL so we can see what exactly it's checking for
print("You are about to run: " + str(statement))
# Print out each result (should only be one)
print("Results:")
for item in my_engine.execute(statement):
    print(item)

我试着在它的位置编写一个字符串。 我尝试使用like instead of where。 所有的结果都是一样的。

预期

我希望它能够生成类似于SELECT * FROM MyTable WHERE Name='Todd'

的内容

实际结果

Searching for Todd
STATEMENT: SELECT "Users"."Name",  ...
FROM "Users"
WHERE "Users"."Name" = ?

这是一个真实的问号出现在我的陈述中,而不仅仅是我自己的困惑。然后,它会打印出表中所有记录的集合,就像它成功匹配所有记录一样。

编辑2:运行我自己的硬编码SQL字符串或Alchemy生成的查询返回表中的每条记录。我开始认为问题可能出在我设置的不接受查询的引擎上。

为什么我感到困惑

根据the official documentationthird party sources,我应该能够与硬编码字符串进行比较,然后通过代理,能够与变量进行比较。

0 个答案:

没有答案