Python: количество строк, на которые влияет cursor.execute ("SELECT …)

Как я могу получить доступ к числу строк, на которые влияет:

cursor.execute("SELECT COUNT(*) from result where server_state='2' AND name LIKE '"+digest+"_"+charset+"_%'") 

  • Использование DATEADD в sqlalchemy
  • как получить единственный результат из SQLite-запроса в python?
  • Фильтрация Sparksql (выбор с предложением where) с несколькими условиями
  • Как использовать переменные в инструкции SQL в Python?
  • создание временной таблицы из запроса с использованием sqlalchemy orm
  • django select_related в шаблоне
  • Несколько уникальных столбцов в SQLite
  • Python, конвертировать 9 кортежей UTC в формат MySQL datetime
  • 6 Solutions collect form web for “Python: количество строк, на которые влияет cursor.execute ("SELECT …)”

    Попробуйте использовать 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, таких как «обновление» или «вставка»).

    Надеюсь, это то, что вы имели в виду.

    Количество выполненных строк возвращается из выполнения:

     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] 
    Python - лучший язык программирования в мире.