gpt4 book ai didi

python - 如何操作来自 cx_Oracle 的查询结果

转载 作者:太空狗 更新时间:2023-10-30 02:39:02 25 4
gpt4 key购买 nike

我正在尝试创建一个包含列结果的列表。我执行了查询,结果没问题,但是当我使用 list.append 在列表中输入数据时,它们只返回 []

import cx_Oracle
con = cx_Oracle.connect('user/psw@localhost')

cur = con.cursor()
list = []

cur.execute('select column from table')
for result in cur.fetchall():
list.append
print (list)

cur.close()
con.close()

返回:

[]
[]
[]

当我将结果放入列表并返回索引时,如 results[0] 它们只打印结果的第一个字母,如:

E
X
A
M
P
L
E

当我只是期待:

Example

我的代码有问题吗?最好的问候,社区!

最佳答案

您的代码存在几个不同的问题。

1)

list.append

追加什么? append 是列表对象的方法,您需要使用参数 调用它。在你的情况下,

 list.append(result)

会按照您的预期进行 - 它将 result 附加到名为 list 的列表中。

<子>注意:这不会产生错误的原因是您甚至没有调用 append 函数,您只是引用它。 在 Python 中,指令只是一个表达式是合法的——当作为脚本运行时,该表达式的结果将被默默地丢弃(与交互式解释器相反,表达式的结果将自动为您打印)。

<子>因此,例如在脚本中的一行中使用 42 == 7 是完全合法的。它不会做任何事情(该表达式的结果 False 将被静默丢弃),但它也不会导致错误。

2)

    print (list)

您在循环内执行此操作,这意味着这将在循环的每次迭代 中执行一次 - 在您的示例中执行 3 次,因为显然从表中选择列 给出三个结果。上面的数字 1) 是您得到空列表 ([]) 的原因,这也是您三次得到空列表 ([] [] []) 的原因。

您可能希望通过减少缩进(将其向左移动 4 个空格)将它移到循环的外部 - 然后列表的内容将只打印一次,在循环的末尾循环。

3)

When I put the results in to a list and return an index, like results[0] they just print the first letter of the results like [...]

我不完全明白你的意思,但是:

在 Python 中,字符串与列表一样,也是序列(字符串是字符的序列)。这意味着某些操作可以在两者上完成,例如索引(sequence[index] 语法)或循环它们(for item in sequence)。

现在,如果你得到这样的结果

E
X
A
M
P
L
E

在 Python 中,这意味着您处理一个实际上是 string 的对象,表明您假设它是一个 list(或其他类型的顺序)。例如,如果

for item in results:
print(item)

for i in range(len(results)):
print(results[0])

导致这种行为,那么results实际上是一个字符串,而不是你期望的列表。


总而言之,您可能想要这样的东西:

# ...

results = []

cur.execute('select column from table')
for row in cur.fetchall():
results.append(row)

# print the entire list
print(results)

# print the first row by addressing it via index
print(results[0])

# print the first column of the third row
print(results[2][0])

# ...

但请注意,游标结果始终是数据库行 - 即使您只选择一列。

关于python - 如何操作来自 cx_Oracle 的查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45577766/

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