python - 如何将元素从数组传递到查询
问题描述
我想知道,我想如何编写一些代码,这给了我在数据库中找到的元素的索引。
我有这样的功能:
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)
然后,您可以将结果附加到记录列表中。
推荐阅读
- azure - 如何在 Azure 的负载均衡环境中创建 Web 应用程序?
- user-interface - 从用户输入(预定关键字)创建 SPARQL 查询并将结果返回给用户的 Web 应用程序
- google-apps-script - Google Apps 脚本在 \dev 下工作,但在 \exec 模式下不工作
- python - 多处理管理器列表错误没有这样的文件或目录,尽管没有让管理器服务器死机
- c# - DevExpress:要在 xtratabpage 标题中使用的转义字符
- python - 如何用键和空值填充缺少的 json 键?
- 3d - 给定内在函数的基本矩阵的最小对应集?
- macos - 在 macOSX 10.15 上安装 xv6
- azure - 在 Azure 虚拟机中管理和创建组策略?
- javascript - Firebase 的数据位置