Python foreach 没有正确循环

标签 python csv for-loop sqlite

我正在编写一个脚本,将一堆 csv 文件格式化为一个 csv 文件。

为此,我通过 sqlite 在 python 中使用了几个游标表。

这是我的代码——目前我只是试图获取 gsap 中与 gsap_locs 中的代码相关联的每一行以进行打印

data = c.execute("SELECT * from gsap_locs")
for row in data:
    print row[0]
    d2 = c.execute("select date, cardtype, volume, transactions from gsap where gsaploc=?", (row[0],))
    for r2 in d2:
        print r2

但是,我的代码只返回一行。我知道问题不在第一个 for 中,因为当我在 print row[0] 之后取出所有内容时,它会打印出第一个选择中的所有值。

为什么在不满足第一个for的条件的情况下跑完第二个for就从我的第一个for跑出来了?

最佳答案

您缺少 fetchallfetchone 指令。
这是很常见的事情,我们认为 execute 已经完成了获取数据的工作,但您应该使用 fetch
要在执行 SELECT 语句后检索数据,您可以将游标视为迭代器,调用游标的 fetchone() 方法检索单个匹配行,或调用 fetchall() 获取匹配行的列表。

import sqlite3
conn = sqlite3.connect('gasp.sqlite')
c = conn.cursor()
c.execute("SELECT * FROM gsap_locs")
rows = c.fetchall()
for row in rows:
    print row[0]
    c.execute("select * from gsap where loc=?", (row[0],))
    d2 = c.fetchall()
    for r2 in d2:
        print r2
conn.close()

关于Python foreach 没有正确循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44682238/

相关文章:

python - 在Python中分割字典并将其写入不同的csv文件

php - MySQL 插入

c++ - 如何计算 C++ 中最长的永久序列(增加或减少)?

javascript - 第二个内含 IF 语句的嵌套循环 (FOR) 仅打印一个结果

python - 如何使用 ElementTree 解析 HTML 以查找特定的 RegEx?

Python 索引超出范围解决方法

python - 从 CSV 加载数据时,QAbstractListModel 不会更新值,但在使用硬编码值时会更新

php - 将非 ASCII 字符打印到 CSV 文件中

mysql - nodejs mysql 将事件的值传递给另一个事件

python - 将值 append 到 np 数组上的切片