Can't get sqlite3.Row working: keyword lookup doesn't work


L

lgabiot

Hello,

using Python 2.7.6

I try to access a sqlite database using keyword lookup instead of
position (much more easy to maintain code), but it always fail, with the
error:
Index must be int or string

I have created the database, populated it, and here is the code that
tries to retrieve the information:

with sqlite3.connect(mydbPath) as db: # open the database
db.row_factory = sqlite3.Row
cursor = db.cursor()
cursor.execute("SELECT * FROM files")

for row in cursor.fetchall():
print(row.keys())
print(row["filename"])


result is:

['filename', 'filepath', 'filetag', 'PROJECT', 'SCENE', 'TAKE', 'TAPE',
'CIRCLED', 'FILE_UID', 'UBITS', 'TOTAL_FILES', 'FAMILY_UID', 'track_1',
'track_2', 'track_3', 'track_4', 'track_5', 'track_6', 'track_7',
'track_8', 'track_9', 'track_10', 'track_11', 'track_12', 'NOTE',
'duration', 'BWF_ORIGINATION_DATE', 'TIMECODE_FLAG', 'TIMECODE_RATE',
'FILE_SAMPLE_RATE', 'AUDIO_BIT_DEPTH', 'DIGITIZER_SAMPLE_RATE',
'TIMESTAMP_SAMPLE_RATE', 'TIMESTAMP_SINCE_MIDNIGHT', 'is_Short',
'is_MS', 'is_renamed_MS', 'WF_created', 'max_level', 'is_silent',
'is_silent_moved', 'silent_path', 'is_WS', 'is_WS_copied', 'CSV_made',
'is_cantar', 'is_sound_devices', 'exist']

error => Index must be int or string

What is wrong?

thanks a lot.
 
Ad

Advertisements

P

Peter Otten

lgabiot said:
using Python 2.7.6

I try to access a sqlite database using keyword lookup instead of
position (much more easy to maintain code), but it always fail, with the
error:
Index must be int or string

I have created the database, populated it, and here is the code that
tries to retrieve the information:

with sqlite3.connect(mydbPath) as db: # open the database
db.row_factory = sqlite3.Row
cursor = db.cursor()
cursor.execute("SELECT * FROM files")

for row in cursor.fetchall():
print(row.keys())
print(row["filename"])


result is:

['filename', 'filepath', 'filetag', 'PROJECT', 'SCENE', 'TAKE', 'TAPE', [...]
'is_cantar', 'is_sound_devices', 'exist']

error => Index must be int or string

Please remember to cut and past the traceback next time.
What is wrong?

My crystal ball says that you have a

from __future__ import unicode_literals

statement at the beginning of the module. If I'm right try

row[b"filename"]
 
L

lgabiot

Le 26/01/14 09:05, Peter Otten a écrit :
Please remember to cut and past the traceback next time.
What is wrong?

My crystal ball says that you have a

from __future__ import unicode_literals

statement at the beginning of the module. If I'm right try

row[b"filename"]


Thanks a lot for your answer!
your crystal ball was completely right, indeed I use the __future__
import, and the b'' fixed everything. Three days I was trying to get this...
 
Ad

Advertisements

L

lgabiot

Le 26/01/14 09:05, Peter Otten a écrit :
Please remember to cut and past the traceback next time.
What is wrong?

My crystal ball says that you have a

from __future__ import unicode_literals

statement at the beginning of the module. If I'm right try

row[b"filename"]


Thanks a lot for your answer!
your crystal ball was completely right, indeed I use the __future__
import, and the b'' fixed everything. Three days I was trying to get this...
 

Top