gpt4 book ai didi

python - 传递参数时Django MySQL查询输出错误

转载 作者:行者123 更新时间:2023-11-29 20:07:31 25 4
gpt4 key购买 nike

cur=connection.cursor()

def fillDoctors(key_bodyloc,proportion):
bodyloc_specialty_query="select distinct Speciality from body_speciality where body_location in (%s) "
#cur.execute(bodyloc_specialty_query)
data1=([key_bodyloc])
#print(bodyloc_specialty_query,data)
cur.execute(bodyloc_specialty_query,data1)
results=cur.fetchall()
specialities=[x[0] for x in results]
condition=""
for speciality in specialities:
print(str(speciality))
condition=condition+"'%"+speciality+"%'"+" or Speciality like "
#print(speciality)
#print(condition)
specialty_doctors_query="select DoctorName,Speciality,ClinicName from Doctors where Speciality like %s limit %s"
data2=([condition,proportion])
print(specialty_doctors_query,data2)
cur.execute(specialty_doctors_query,data2)

final=cur.fetchall()
print(final)

final=cur.fetchall() 行在每次迭代中返回一个空元组。我已经验证表 Doctors 不为空,并且当“条件”被硬编码时代码可以正常工作。该代码应该打印每个专业的医生详细信息。谁能告诉我为什么会发生这种情况?

最佳答案

在我看来,在调用 cur.execute(bodyloc_specialty_query,data1) 时,您没有正确地将 data1 传递到 bodyloc_specialty_query 中,这会导致问题。

Python中字符串注入(inject)的语法如下:

str1 = "some string %s" % "other string"

不要使用这种将字符串添加到字符串的方式,而是使用 Python 的 format 内置函数:

str1 = "some string {str2}".format(str2="other_string").

但请确保您的 str2 是字符串或可转换为字符串。

我可以看到您的data1是一个list,而不是str。您应该首先将其转换为 str 。祝你好运。

关于python - 传递参数时Django MySQL查询输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40293120/

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