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()
ラインを通過しています。私は、テーブルの医師が空ではないことを確認し、コードは '条件'がハードコードされているときに正常に動作します。コードは各専門分野の医師の詳細を印刷することになっています。誰がなぜこれが起こっているのか教えてもらえますか?ジャンゴMySQLのクエリ出力誤差パラメータ
は文字通り '%'と 'format'、それを間に違いはありませんSQLインジェクションからのセキュリティになります。 –
編集されました。私はそれを研究する必要があると思うと思う。 –
line results = cur.fetchall()はうまく動作し、期待される結果を返します。問題は 'specialty_doctors_query'が私の知っていることですが、私は何を理解することができません。 –