【发布时间】:2014-03-31 17:35:00
【问题描述】:
我不知道如何解决这个问题:我的 SQLite3 数据库中有三个表,当我尝试使用 fetchone() 在 for 循环中访问它们时,表 1 的数据行没有显示,但是使用 for 循环和fetchone(),我的表 3 的数据行显示得很好。 fetchall() 是唯一可以访问 table1 中数据的方法,fetchall() 也适用于 table3。我在 table1 和 3 个文本列中只有一行数据,在 table3 和 6 个文本列中只有很多行数据。这个交互模式示例显示了与我的非交互脚本相同的问题:
>>> cur.execute('select * from ' + tablename1)
<sqlite3.Cursor object at 0x021A3420>
>>> print '\n'+str(cur.fetchall())
[(u'OMAHA / COUNCIL BLUFFS, NEBRASKA, US', None, u'green')]
>>> cur.execute('select * from ' + tablename1)
<sqlite3.Cursor object at 0x021A3420>
>>> for row in cur:
... data = cur.fetchone()
... print data
...
None
>>> cur.execute('select * from '+tablename1)
<sqlite3.Cursor object at 0x021A3420>
>>> cur.execute('PRAGMA table_info('+tablename1+')')
<sqlite3.Cursor object at 0x021A3420>
>>> data = cur.fetchall()
>>> for d in data:
... print d[0], d[1], d[2]
...
0 REGIONUPPERCASE TEXT
1 REGION TEXT
2 REDGREEN TEXT
>>> cur.execute('select * from '+tablename3)
<sqlite3.Cursor object at 0x021A3420>
>>> cur.execute('PRAGMA table_info('+tablename3+')')
<sqlite3.Cursor object at 0x021A3420>
>>> data = cur.fetchall()
>>> for d in data:
... print d[0], d[1], d[2]
...
0 REGIONUPPERCASE TEXT
1 REGION TEXT
2 REDGREEN TEXT
3 COORDSLAT TEXT
4 COORDSLONG TEXT
5 CLHREF TEXT
>>> cur.execute('select * from ' + tablename3)
<sqlite3.Cursor object at 0x021A3420>
>>> for row in cur:
... data = cur.fetchone()
... print data
...
(u'BIRMINGHAM, ALABAMA, US', u'birmingham, Alabama, US', u'red', u'33.5206608', u'-86.80249', u'
(u'FLORENCE / MUSCLE SHOALS, ALABAMA, US', u'florence / muscle shoals, Alabama, US', u'red', u'3
(u'HUNTSVILLE / DECATUR, ALABAMA, US', u'huntsville / decatur, Alabama, US', u'red', u'34.72849'
(u'MONTGOMERY, ALABAMA, US', u'montgomery, Alabama, US', u'red', u'32.3668052', u'-86.2999689',
(u'ANCHORAGE / MAT-SU, ALASKA, US', u'anchorage / mat-su, Alaska, US', u'red', u'61.340307', u'-
(u'KENAI PENINSULA, ALASKA, US', u'kenai peninsula, Alaska, US', u'red', u'59.8785222', u'-150.3
(u'FLAGSTAFF / SEDONA, ARIZONA, US', u'flagstaff / sedona, Arizona, US', u'red', u'34.8262376',
就像我说的,fetchall() 适用于 table3,我只是没有在此处发布该输出。到目前为止,我还没有进入 table2(这是一个新创建的数据库,我还没有完全发挥作用)所以我们现在不用担心 table2。它将更类似于 table1 而不是 table3。换句话说,tables1 和 2 列架构是 table3 列架构的子集。
我想知道其中的表或数据是否已损坏或已损坏。那可能吗。这对我来说似乎很奇怪。我不知道如何解决这个问题或从哪里开始,所以我向任何有能力的人寻求帮助。
感谢大家对他人的帮助!
【问题讨论】: