db(db.items.id==int(row)).select(db.items.imageName)
возвращает Rows
объект и метод его __str__
преобразует его в выходной CSV, который является то, что вы видите.
объект Rows
объект содержит объекты , а объект содержит значения полей. Чтобы получить доступ к отдельному значению поля, вы должны сначала проиндексировать объект Rows
, чтобы извлечь , а затем получить значение отдельного поля в качестве атрибута . Таким образом, в данном случае, это было бы:
db(db.items.id==int(row)).select(db.items.imageName)[0].imageName
или:
db(db.items.id==int(row)).select(db.items.imageName).first().imageName
Преимущество rows.first()
над rows[0]
является то, что прежние возвращения не None
в случае нет никаких строк, в то время как последний будет генерировать исключение (это не помогает в вышеупомянутом случае, поскольку последующая попытка получить доступ к атрибуту .imageName
приведет к возникновению исключения в любом случае, если не было строк).
Обратите внимание, что даже если выбор возвращает только одну строку с одним полем, вам все равно придется явно извлекать строку и значение поля, как указано выше.