gpt4 book ai didi

python - 如何检查列是否存在,如果存在,则从中返回一个值

转载 作者:行者123 更新时间:2023-11-29 12:55:48 26 4
gpt4 key购买 nike

在 psycopg2 中,如果我有一个表:

+------+-----+-------+  
| name | age | color |
+------+-----+-------+
| Bob | 25 | red |
| Bill | 50 | blue |
| Jane | 45 | black |
+------+-----+-------+

如果我执行 cursor.execute("SELECT * FROM mySchema.this_table LIMIT 1")然后我检查颜色是否存在:colnames = [desc[0] for desc in cursor.description]然后在 colnames 中搜索“color”

然后我想我得到了:myrow = importCursor.fetchone()

但是如何获取该行的“颜色”值?我尝试了 color = importCursor.fetchone()['color']但这不起作用。

如何获取该 SELECT 语句返回的行的颜色值?我不知道表中有多少列,或者“颜色”列是否始终为第 3 列我必须为此表中的一堆列执行此操作(检查是否存在,如果存在,则返回列行的值),因此最好采用有效的方法!

最佳答案

只选择部分列

如果您只选择某些列,那么您确实知道列顺序。

cursor.execute("SELECT name, age, color FROM mySchema.this_table LIMIT 1")

现在您知道第 0 列是姓名,第 1 列是年龄,第 2 列是颜色。因此,您可以使用 myrow[1] 之类的内容来选择哪个。

首先获取列图

您可以获得返回列的映射,然后使用它来确定从何处获取。

column_names = [desc[0] for desc in cursor.description]
if 'color' in column_names:
color = cursor.fetchOne()[column_names.index('color')]

这样应该是比较高效的,因为查询后只需要计算一次列名列表,然后通过索引这样简单的列表操作就可以将列名映射到一个列号和 in,这比再次访问数据库要快得多。

关于python - 如何检查列是否存在,如果存在,则从中返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43591378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com