cursor.rowcount всегда-1 в sqlite3 в python3k

  1. Это было вызвано тем, что Visual Studio Code «помог» мне, импортировав: import { environment } from '@environments/environment.prod';
  2. Правильное место для fileReplacements находится в architect.test.options.fileReplacements.
  3. Чтобы VSCode никогда не «помог» мне снова, я переименую все файлы environment.*.ts, кроме environment.ts, во что-то вроде DO-NOT-IMPORT.ENVIRONMENT.*.ts. По крайней мере, это будет кричать на меня, если я получу неправильный импорт.
24
задан Patrizio Bertoni 14 May 2015 в 15:29
поделиться

4 ответа

Из документации :

В соответствии с требованиями спецификации API Python DB, атрибут rowcount «-1 в случае не выполняется executeXX () курсор или количество строк последнего операция не определяется интерфейс ».

Сюда входят операторы SELECT потому что мы не можем определить число строк запрос производится до

Это означает, что все операторы SELECT не будут иметь rowcount . Поведение, которое вы наблюдаете, задокументировано.

РЕДАКТИРОВАТЬ: Документация нигде не говорит, что rowcount будет обновляться после того, как вы выполните fetchall () , так что это просто неверно предполагать, что.

20
ответ дан 28 November 2019 в 23:18
поделиться
cursor = newdb.execute('select * from mydb;')
print len(cursor.fetchall())

fetchall () вернет список строк, возвращаемых из выбора. Лен из этого списка даст вам количество строк.

16
ответ дан 28 November 2019 в 23:18
поделиться

Может лучше посчитать строки таким образом:

 print cur.execute("SELECT COUNT(*) FROM table_name").fetchone()[0]
7
ответ дан 28 November 2019 в 23:18
поделиться

Instead of "checking if a fetchone() returns something different than None", I suggest:

cursor.execute('SELECT * FROM foobar')
for row in cursor:
   ...

this is sqlite-only (not supported in other DB API implementations) but very handy for sqlite-specific Python code (and fully documented, see http://docs.python.org/library/sqlite3.html).

8
ответ дан 28 November 2019 в 23:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: