我想知道,我想怎么写一些代码,它给了我在数据库中找到的元素的索引。
我有这样的功能:
def get_teachers_names(name, lastname):
try:
params = config()
conn = psycopg2.connect(**params)
cur = conn.cursor()
select_query = "SELECT id FROM lecturers WHERE name = %s AND lastname = %s"
record_to_find = (name, lastname)
cur.execute(select_query, record_to_find)
records = list(cur)
conn.commit()
cur.close()
return records
except (Exception, psycopg2.DatabaseError) as error:
print(error)
当我做的事情:
index = database.get_teachers_names('Name1', 'Surname1')
我得到了我想要的索引。但是当我有一个清单时:
names = ('Name1', 'Name2')
surnames = ('Surname1', 'Surname2')
我也尝试用同样的方法:
index = database.get_teachers_names(names[0], surnames[0]
我得到[]作为结果。我也尝试过:
index = database.get_teachers_names(''.join(names[0], ''.join(surnames[0]))
但它也没有用。有什么建议?
它传递一个简单的字符串,因为它们将正确填充查询字符串:
index = database.get_teachers_names('Name1', 'Surname1')
但是,当您传递列表时,它将无法正确解析为:
"SELECT id FROM lecturers WHERE name = %s AND lastname = %s"
我认为最好的方法是遍历列表并为每个条目执行此操作:cur.execute(select_query,record_to_find)
然后,您可以将结果附加到记录列表中。