Мое знакомство с psycopg2 ограничено, поэтому вам, возможно, придется скорректировать следующее. Но прямо sql это может быть выполнено одним утверждением:
select *
from students
where exists (select null
from teachers
where t_name = 'xoxo'
and password = 'xoxo2020'
);
Насколько я могу определить, это переводится в psycopg2 как (предмет выше):
conn=psycopg2.connect(host='localhost', database='my_first_db', user='postgres', password='postgres')
curr= conn.cursor()
curr.execute("select * from students where exists (select null from teachers where t_name='xoxo' and password='xoxo2020')")
if curr.rowcount > 0
result=curr.fetchall()
for x in result:
print(x)
else:
print("not found")
curr.close()
conn.close()
Основная идея заключается в том, чтобы при работе с sql перестать думать с точки зрения проверить A; Если он существует, тогда сделайте B; Но скорее подумайте с точки зрения do B, где A;
Другими словами, пусть один оператор sql выполняет ВСЕ работу , включая любую необходимую проверку.