6 ответов:
Попробуйте использовать
fetchone:cursor.execute("SELECT COUNT(*) from result where server_state='2' AND name LIKE '"+digest+"_"+charset+"_%'") result=cursor.fetchone()
resultбудет содержать кортеж с одним элементом, значениемCOUNT(*). Итак, чтобы найти количество строк:number_of_rows=result[0]Или, если вы предпочитаете сделать это одним махом:
cursor.execute("SELECT COUNT(*) from result where server_state='2' AND name LIKE '"+digest+"_"+charset+"_%'") (number_of_rows,)=cursor.fetchone()ПС. Кроме того, рекомендуется использовать параметризованные аргументы, когда это возможно, потому что он может автоматически цитировать аргументы для вас, когда это необходимо, и защитить от внедрения sql.
Правильный синтаксис параметризованных аргументов зависит от вашего адаптера python/database (например mysqldb, psycopg2 или sqlite3). Это будет выглядеть примерно так
cursor.execute("SELECT COUNT(*) from result where server_state= %s AND name LIKE %s",[2,digest+"_"+charset+"_%"]) (number_of_rows,)=cursor.fetchone()
Из PEP 249, который обычно реализуется API баз данных Python:
Объекты Курсора должны отвечать следующим методам и атрибутам:
[...]
.количество строк
Этот атрибут только для чтения определяет количество строк, которые являются последними .выполнить*() производятся (DQL по отчетности Как "выбрать") или пострадавшего (по инструкции DML как 'обновить' или 'вставить').Надеюсь, что вы это имели в виду.
Количество выполненных строк возвращается из execute:
rows_affected=cursor.execute("SELECT ... ")Конечно, как уже упоминалось в AndiDog, вы можете получить количество строк, обратившись к свойству rowcount курсора в любое время, чтобы получить количество для последнего выполнения:
cursor.execute("SELECT ... ") rows_affected=cursor.rowcountИз встроенной документации python MySQLdb:
def execute(self, query, args=None): """Execute a query. query -- string, query to execute on server args -- optional sequence or mapping, parameters to use with query. Note: If args is a sequence, then %s must be used as the parameter placeholder in the query. If a mapping is used, %(key)s must be used as the placeholder. Returns long integer rows affected, if any """
На мой взгляд, самый простой способ получить количество выделенных строк - это:
Объект cursor возвращает список с результатами при использовании команд fetchAll(), fetchone(), fetchmany (). Чтобы получить выбранные строки, просто выведите длину этого списка. Но это просто имеет смысл для fetchall (). ;- )
Пример:
print len(cursor.fetchall)
Для mysql самый простой способ-это
mycur.execute("SELECT COUNT(*) FROM osreport") print(mycur.fetchall())
/ / это работает для меня. U может использовать этот способ
query = "select count(id) from test" cursor.execute(query) var = cursor.fetchone () print var[0]
Comments