Как получить доступ к количеству строк, на которые влияет:
cursor.execute("SELECT COUNT(*) from result where server_state='2' AND name LIKE '"+digest+"_"+charset+"_%'")
Как получить доступ к количеству строк, на которые влияет:
cursor.execute("SELECT COUNT(*) from result where server_state='2' AND name LIKE '"+digest+"_"+charset+"_%'")
Попробуйте использовать 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()
PS. Также полезно использовать параметризованные аргументы, когда это возможно, потому что он может автоматически указывать аргументы для вас, когда это необходимо, и защищать от 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:
Объекты курсора должны отвечать на следующие методы и атрибуты:
[...]
.rowcount
Этот атрибут только для чтения указывает количество строк, созданных последним .execute *() (для операторов DQL, таких как "select" ) или затронутых (для операторов DML, таких как "update" или "insert" ).
Надеюсь, это то, что вы имели в виду.
Число выполняемых строк возвращается из выполнения:
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]