gpt4 book ai didi

python - 使用 pymssql 库 - 即使没有任何可用值,查询也会返回未知值?

转载 作者:行者123 更新时间:2023-12-01 03:01:22 25 4
gpt4 key购买 nike

我是 Python 和 Web 开发领域的新手。所以请对我宽容点:)。

我下面有一段代码 ->

import pymssql

tupleA = [(1,a), (2,b), (3,c), (4,d), (5,e)]

con = pymssql.connect('server', 'username', 'pass', 'db')
cur = con.cursor()

onlyNumber = [x[0] for x in tupleA]
onlyLetter = [x[1] for x in tupleA]

querystring = """
select COUNT(hl.id), h.number_id from h
left join hl on hl.h_id = h.id
left join l on l.id = hl.l_id
where h.number_id in (%s) and l.letter_id in (%s)
GROUP by h.number_id
""" % (','.join(map(str, onlyNumber)), ','.join(map(str, onlyLetter)))

cur.execute(querystring)

numberOfHl = []
number = []

for row in cur:
numberOfHl.append(row[0])
number.append(row[1])

setThree = zip(numberOfHl, number)

print setThree

con.close()

上面的代码返回未知值,特别是对于 numberOfHl,即 [(11,1),(9,2),(5>,3),(12,4),(10,5)] 因为我知道当我在 SQL 中运行该查询时它不会返回任何值。

我在这里做错了什么?我的查询是否需要更改并正确处理空值?通过添加 .join 我是否创建了那些未知值?

请提供任何帮助,我们将不胜感激。再次为我缺乏编程知识而感到抱歉。

最佳答案

我不完全确定发生了什么,但你做得有点错误。
您应该首先准备带有占位符的查询字符串:

querystring = """
select COUNT(hl.id), h.number_id from h
left join hl on hl.h_id = h.id
left join l on l.id = hl.l_id
where h.number_id in (%s) and l.letter_id in (%s)
GROUP by h.number_id
""" % (','.join(len(onlyNumber)*['%s']), ','.join(len(onlyLetter)*['%s']))

结果:

>>> print(querystring)

select COUNT(hl.id), h.number_id from h
left join hl on hl.h_id = h.id
left join l on l.id = hl.l_id
where h.number_id in (%s,%s,%s,%s,%s) and l.letter_id in (%s,%s,%s,%s,%s)
GROUP by h.number_id

这样你就有了占位符,你可以将这些值作为第二个参数传递给.execute(),如下所示:

 cur.execute(querystring,tuple(onlyNumber + onlyLetter))

关于python - 使用 pymssql 库 - 即使没有任何可用值,查询也会返回未知值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43788722/

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