我有一个小型数据库,这是一个几乎已经不复存在的项目的遗产。该数据库有一个“患者”表,其中包含个人个人数据和唯一的“身份证”字段,以及一个“考试”表,其中包含每个考试的一些字段,其中一个字段为“Patient_Id”。
我想要的是,对于给定的患者(来自“Pacientes”表的行)来自“Exames”表的“Patient_Id”与给定患者的匹配的检查(行)。
我是SQL的初学者,所以如果问题非常幼稚,我道歉。
我的工作代码如下,但我使用的是for循环,而我更愿意使用SQL查询(这是使用数据库的重点,我认为......):
#!/usr/bin/env python
# coding: utf-8
import os, sqlite3
conn = sqlite3.connect('BDdata.db3')
conn.row_factory = sqlite3.Row
c = conn.cursor()
c.execute('SELECT * FROM Exames')
exams = c.fetchall()
c.execute('SELECT * FROM Pacientes')
for row in c:
Nome = row['nome']
ID = row['Id']
for exam in exams: # I would like to replace this loop
if exam['Id_Paciente'] == ID: # with a SQL query meaning
print exam['File']
============================
对类似问题的回答似乎是我想要的,但我不知道如何在Python中使用sqlite3
模块执行此操作,更不用说此表达式中的内容是必不可少的,什么是偶然的,或者是什么是语法结构:
Selecting rows from a table by One a field from other table
SELECT i.prof_image
FROM profile_images i
WHERE cat_id = (select max(cat_id) from images_cat)
答案 0 :(得分:1)
我认为以下内容应该符合您的要求:
...
c = conn.cursor()
c.execute('SELECT * FROM Pacientes')
for row in c.fetchall():
Nome = row['nome']
ID = row['Id']
c.execute('SELECT File FROM Exames WHERE Id_Paciente=?', [ID])
for exam in c:
print exam['File']