Получение результатов запроса — Python для сетевых инженеров
Для получения результатов запроса в sqlite3 есть несколько способов:
Метод fetchone
Метод fetchone возвращает одну строку данных.
Пример получения информации из базы данных sw_inventory.db:
In [16]: import sqlite3 In [17]: connection = sqlite3.connect('sw_inventory.db') In [18]: cursor = connection.cursor() In [19]: cursor.execute('select * from switch') Out[19]: <sqlite3.Cursor at 0x104eda810> In [20]: cursor.fetchone() Out[20]: ('0000.AAAA.CCCC', 'sw1', 'Cisco 3750', 'London, Green Str')
Обратите внимание, что хотя запрос SQL подразумевает, что запрашивалось всё содержимое таблицы, метод fetchone вернул только одну строку.
Если повторно вызвать метод, он вернет следующую строку:
In [21]: print(cursor.fetchone()) ('0000.BBBB.CCCC', 'sw2', 'Cisco 3780', 'London, Green Str')
Аналогичным образом метод будет возвращать следующие строки. После обработки всех строк метод начинает возвращать None.
За счет этого метод можно использовать в цикле, например, так:
In [22]: cursor.execute('select * from switch') Out[22]: <sqlite3.Cursor at 0x104eda810> In [23]: while True: ...: next_row = cursor.fetchone() ...: if next_row: ...: print(next_row) ...: else: ...: break ...: ('0000.AAAA.CCCC', 'sw1', 'Cisco 3750', 'London, Green Str') ('0000.BBBB.CCCC', 'sw2', 'Cisco 3780', 'London, Green Str') ('0000.AAAA.DDDD', 'sw3', 'Cisco 2960', 'London, Green Str') ('0011.AAAA.CCCC', 'sw4', 'Cisco 3750', 'London, Green Str') ('0000.1111.0001', 'sw5', 'Cisco 3750', 'London, Green Str') ('0000.1111.0002', 'sw6', 'Cisco 3750', 'London, Green Str') ('0000.1111.0003', 'sw7', 'Cisco 3750', 'London, Green Str') ('0000.1111.0004', 'sw8', 'Cisco 3750', 'London, Green Str')
Метод fetchmany
Метод fetchmany возвращает список строк данных.
Синтаксис метода:
cursor.fetchmany([size=cursor.arraysize])
С помощью параметра size можно указывать, какое количество строк возвращается. По умолчанию параметр size равен значению cursor.arraysize:
In [24]: print(cursor.arraysize) 1
Например, таким образом можно возвращать по три строки из запроса:
In [25]: cursor.execute('select * from switch') Out[25]: <sqlite3.Cursor at 0x104eda810> In [26]: from pprint import pprint In [27]: while True: ...: three_rows = cursor.fetchmany(3) ...: if three_rows: ...: pprint(three_rows) ...: else: ...: break ...: [('0000.AAAA.CCCC', 'sw1', 'Cisco 3750', 'London, Green Str'), ('0000.BBBB.CCCC', 'sw2', 'Cisco 3780', 'London, Green Str'), ('0000.AAAA.DDDD', 'sw3', 'Cisco 2960', 'London, Green Str')] [('0011.AAAA.CCCC', 'sw4', 'Cisco 3750', 'London, Green Str'), ('0000.1111.0001', 'sw5', 'Cisco 3750', 'London, Green Str'), ('0000.1111.0002', 'sw6', 'Cisco 3750', 'London, Green Str')] [('0000.1111.0003', 'sw7', 'Cisco 3750', 'London, Green Str'), ('0000.1111.0004', 'sw8', 'Cisco 3750', 'London, Green Str')]
Метод выдает нужное количество строк, а если строк осталось меньше, чем параметр size, то оставшиеся строки.
Метод fetchall
Метод fetchall возвращает все строки в виде списка:
In [28]: cursor.execute('select * from switch') Out[28]: <sqlite3.Cursor at 0x104eda810> In [29]: cursor.fetchall() Out[29]: [('0000.AAAA.CCCC', 'sw1', 'Cisco 3750', 'London, Green Str'), ('0000.BBBB.CCCC', 'sw2', 'Cisco 3780', 'London, Green Str'), ('0000.AAAA.DDDD', 'sw3', 'Cisco 2960', 'London, Green Str'), ('0011.AAAA.CCCC', 'sw4', 'Cisco 3750', 'London, Green Str'), ('0000.1111.0001', 'sw5', 'Cisco 3750', 'London, Green Str'), ('0000.1111.0002', 'sw6', 'Cisco 3750', 'London, Green Str'), ('0000.1111.0003', 'sw7', 'Cisco 3750', 'London, Green Str'), ('0000.1111.0004', 'sw8', 'Cisco 3750', 'London, Green Str')]
Важный аспект работы метода — он возвращает все оставшиеся строки.
То есть, если до метода fetchall использовался, например, метод fetchone, то метод fetchall вернет оставшиеся строки запроса:
In [30]: cursor.execute('select * from switch') Out[30]: <sqlite3. Cursor at 0x104eda810> In [31]: cursor.fetchone() Out[31]: ('0000.AAAA.CCCC', 'sw1', 'Cisco 3750', 'London, Green Str') In [32]: cursor.fetchone() Out[32]: ('0000.BBBB.CCCC', 'sw2', 'Cisco 3780', 'London, Green Str') In [33]: cursor.fetchall() Out[33]: [('0000.AAAA.DDDD', 'sw3', 'Cisco 2960', 'London, Green Str'), ('0011.AAAA.CCCC', 'sw4', 'Cisco 3750', 'London, Green Str'), ('0000.1111.0001', 'sw5', 'Cisco 3750', 'London, Green Str'), ('0000.1111.0002', 'sw6', 'Cisco 3750', 'London, Green Str'), ('0000.1111.0003', 'sw7', 'Cisco 3750', 'London, Green Str'), ('0000.1111.0004', 'sw8', 'Cisco 3750', 'London, Green Str')]
Метод fetchmany в этом аспекте работает аналогично.
Примеры работы с MySQL в Python при помощи модуля PyMySQL
В следующей инструкции будет показано, как использовать MySQL в Python при помощи PyMySQL модуля.
PyMySQL на примерах
PyMySQL представляет собой уникальную для Python клиентскую библиотеку, основанную на PEP 249. Большая часть общедоступных API совместимы с mysqlclient и MySQLdb. PyMySQL работает с MySQL 5.5+ и MariaDB 5.5+.
MySQL считается лидирующей системой управления базами данных с открытым исходным кодом. Это многопользовательская и многопоточная система управления базами данных. MySQL пользуется особой популярностью у программистов.
Установка PyMySQL
$ sudo pip3 install PyMySQL
Для установки PyMySQL используется pip3.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Python Форум Помощи
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Подписаться
PyMySQL — узнаем версию MySQL
В следующем примере показано, как отобразить текущую версию MySQL.
Python
#!/usr/bin/python3 # -*- coding: utf-8 -*- import pymysql con = pymysql.connect(‘localhost’, ‘user17’, ‘s$cret’, ‘mydb’) with con: cur = con.cursor() cur.execute(«SELECT VERSION()») version = cur.fetchone() print(«Database version: {}».format(version[0]))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/usr/bin/python3 # -*- coding: utf-8 -*-
import pymysql
con = pymysql.connect(‘localhost’, ‘user17’, ‘s$cret’, ‘mydb’)
with con:
cur = con.cursor() cur.execute(«SELECT VERSION()»)
version = cur.fetchone()
print(«Database version: {}».format(version[0])) |
Для того чтобы узнать версию MySQL, можно использовать команду SELECT VERSION()
.
Python
import pymysql
import pymysql |
Для этого потребуется импортировать pymysql
модуль.
Python
con = pymysql.connect(‘localhost’, ‘user17’, ‘s$cret’, ‘mydb’)
con = pymysql.connect(‘localhost’, ‘user17’, ‘s$cret’, ‘mydb’) |
Затем производится подключение к базе данных при помощи connect()
. Здесь требуется указать четыре параметра:
- имя хоста;
- имя пользователя;
- пароль;
- название базы данных.
Python
with con:
with con: |
При помощи with
интерпретатор Python автоматически открывает доступные ресурсы. Он также обрабатывает возможные ошибки.
Python
cur = con.cursor()
cur = con.cursor() |
Из объекта подключения con
создается курсор. Курсор используется для перемещения записей из набора результатов.
Python
cur.execute(«SELECT VERSION()»)
cur.execute(«SELECT VERSION()») |
Для использования команды SQL вызывается метод курсора execute()
.
Python
version = cur.fetchone()
version = cur.fetchone() |
Метод fetchone()
позволяет вызвать следующую строку из набора результатов запроса, показывая только одну запись. В том случае, если доступных данных нет, выводится
.
Python
print(«Database version: {}».format(version[0]))
print(«Database version: {}».format(version[0])) |
Таким образом, версия базы данных выводится на экран.
$ ./version.py Database version: 5.7.23-0ubuntu0.16.04.1
$ ./version.py Database version: 5.7.23-0ubuntu0.16.04.1 |
Это результат вывода.
PyMySQL fetchAll
Метод fetchAll()
позволяет извлечь все (оставшиеся) строки результата запроса, возвращая их в виде последовательности последовательностей.
Python
#!/usr/bin/python3 # -*- coding: utf-8 -*- import pymysql con = pymysql.connect(‘localhost’, ‘user17’, ‘s$cret’, ‘testdb’) with con: cur = con.cursor() cur. execute(«SELECT * FROM cities») rows = cur.fetchall() for row in rows: print(«{0} {1} {2}».format(row[0], row[1], row[2]))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/usr/bin/python3 # -*- coding: utf-8 -*-
import pymysql
con = pymysql.connect(‘localhost’, ‘user17’, ‘s$cret’, ‘testdb’)
with con:
cur = con.cursor() cur.execute(«SELECT * FROM cities»)
rows = cur.fetchall()
for row in rows: print(«{0} {1} {2}».format(row[0], row[1], row[2])) |
В данном примере из таблицы базы данных выводятся все города (cities).
Python
cur.execute(«SELECT * FROM cities»)
cur. execute(«SELECT * FROM cities») |
Данный оператор SQL выбирает все данные из таблицы cities
.
Python
rows = cur.fetchall()
rows = cur.fetchall() |
Метод fetchall()
позволяет получить все записи. Он возвращает набор результатов. Технически, это кортеж из кортежей. Каждый из внутренних кортежей представляет собой строку в таблице.
Python
for row in rows: print(«{0} {1} {2}».format(row[0], row[1], row[2]))
for row in rows: print(«{0} {1} {2}».format(row[0], row[1], row[2])) |
Данные выводятся в консоль строка за строкой.
$ ./retrieve_all.py 1 Bratislava 432000 2 Budapest 1759000 3 Prague 1280000 4 Warsaw 1748000 5 Los Angeles 3971000 6 New York 8550000 7 Edinburgh 464000 8 Berlin 3671000
1 2 3 4 5 6 7 8 9 | $ . /retrieve_all.py 1 Bratislava 432000 2 Budapest 1759000 3 Prague 1280000 4 Warsaw 1748000 5 Los Angeles 3971000 6 New York 8550000 7 Edinburgh 464000 8 Berlin 3671000 |
Это результат вывода.
PyMySQL словарь курсора
По умолчанию курсор возвращает данные в кортеж из кортежей. При использовании словаря курсора данные отправляются в форму, которая используется словарями Python. В таком случае появляется возможность обращения к данным посредством названий их столбцов.
Python
#!/usr/bin/python3 # -*- coding: utf-8 -*- import pymysql import pymysql.cursors con = pymysql.connect(host=’localhost’, user=’user17′, password=’s$cret’, db=’mydb’, charset=’utf8mb4′, cursorclass=pymysql.cursors.DictCursor) with con: cur = con. cursor() cur.execute(«SELECT * FROM cities») rows = cur.fetchall() for row in rows: print(row[«id»], row[«name»])
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #!/usr/bin/python3 # -*- coding: utf-8 -*-
import pymysql import pymysql.cursors
con = pymysql.connect(host=’localhost’, user=’user17′, password=’s$cret’, db=’mydb’, charset=’utf8mb4′, cursorclass=pymysql.cursors.DictCursor)
with con:
cur = con.cursor() cur.execute(«SELECT * FROM cities»)
rows = cur.fetchall()
for row in rows: print(row[«id»], row[«name»]) |
В данном примере показано, как получить первые строки таблицы cities
при помощи использования словаря курсора.
Python
con = pymysql.connect(host=’localhost’, user=’user17′, password=’s$cret’, db=’mydb’, charset=’utf8mb4′, cursorclass=pymysql.cursors.DictCursor)
1 2 3 4 5 6 | con = pymysql.connect(host=’localhost’, user=’user17′, password=’s$cret’, db=’mydb’, charset=’utf8mb4′, cursorclass=pymysql.cursors.DictCursor) |
Используя метод connect()
, можно передать значение pymysql.cursors.DictCursor
параметру cursorclass
.
Python
for row in rows: print(row[«id»], row[«name»])
for row in rows: print(row[«id»], row[«name»]) |
Обращение к данным происходит при помощи названий столбцов таблицы cities
.
PyMySQL заголовки столбцов
Далее будет показано, как вывести названия столбцов с информацией из таблицы базы данных.
Python
#!/usr/bin/python3 # -*- coding: utf-8 -*- import pymysql con = pymysql.connect(‘localhost’, ‘user17’, ‘s$cret’, ‘testdb’) with con: cur = con.cursor() cur.execute(«SELECT * FROM cities») rows = cur.fetchall() desc = cur.description print(«{0:>3} {1:>10}».format(desc[0][0], desc[1][0])) for row in rows: print(«{0:3} {1:>10}».format(row[0], row[2]))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #!/usr/bin/python3 # -*- coding: utf-8 -*-
import pymysql
con = pymysql. connect(‘localhost’, ‘user17’, ‘s$cret’, ‘testdb’)
with con:
cur = con.cursor() cur.execute(«SELECT * FROM cities»)
rows = cur.fetchall()
desc = cur.description
print(«{0:>3} {1:>10}».format(desc[0][0], desc[1][0]))
for row in rows: print(«{0:3} {1:>10}».format(row[0], row[2])) |
Названия столбцов представляют собой метаданные. Они извлекаются из объекта курсора.
Python
desc = cur.description
desc = cur.description |
Атрибут курсора description
возвращает информацию о каждом результативном столбце запроса.
Python
print(«{0:>3} {1:>10}».format(desc[0][0], desc[1][0]))
print(«{0:>3} {1:>10}». format(desc[0][0], desc[1][0])) |
Таким образом, выводятся и форматируются названия столбцов таблицы.
Python
for row in rows: print(«{0:3} {1:>10}».format(row[0], row[2]))
for row in rows: print(«{0:3} {1:>10}».format(row[0], row[2])) |
Данные перебираются и выводятся на экран при помощи цикла for.
$ ./column_headers.py id name 1 432000 2 1759000 3 1280000 4 1748000 5 3971000 6 8550000 7 464000 8 3671000
1 2 3 4 5 6 7 8 9 10 | $ ./column_headers.py id name 1 432000 2 1759000 3 1280000 4 1748000 5 3971000 6 8550000 7 464000 8 3671000 |
Это результат вывода.
PyMySQL связываемые переменные
При написании связываемых переменных вместо прямого введения значений используется специальные плейсхолдеры (placeholders). Связываемые переменные позволяют повысить безопасность и производительность.
Python
#!/usr/bin/python3 # -*- coding: utf-8 -*- import pymysql con = pymysql.connect(‘localhost’, ‘user17’, ‘s$cret’, ‘testdb’) # user input myid = 4 with con: cur = con.cursor() cur.execute(«SELECT * FROM cities WHERE id=%s», myid) cid, name, population = cur.fetchone() print(cid, name, population)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #!/usr/bin/python3 # -*- coding: utf-8 -*-
import pymysql
con = pymysql. connect(‘localhost’, ‘user17’, ‘s$cret’, ‘testdb’)
# user input myid = 4
with con:
cur = con.cursor()
cur.execute(«SELECT * FROM cities WHERE id=%s», myid)
cid, name, population = cur.fetchone() print(cid, name, population) |
В данном примере показано, как получить строку с определенным Id.
Python
cur.execute(«SELECT * FROM cities WHERE id=%s», myid)
cur.execute(«SELECT * FROM cities WHERE id=%s», myid) |
Здесь используется плейсхолдер, который идентифицируется при помощи маркера %s. Перед тем, как определенная SQL переменная будет задействована, она должна быть привязана к ее плейсхолдеру.
$ ./prepared_statement.py 4 Warsaw 1748000
$ . /prepared_statement.py 4 Warsaw 1748000 |
Это результат вывода.
PyMySQL задействованные строки
Предназначенный только для чтения атрибут курсор rowcount
показывает количество строк, которые были получены в результате последнего использования одного из операторов SELECT, UPDATE или INSERT.
Python
#!/usr/bin/python3 # -*- coding: utf-8 -*- import pymysql con = pymysql.connect(‘localhost’, ‘user17’, ‘s$cret’, ‘mydb’) with con: cur = con.cursor() cur.execute(«SELECT * FROM cities WHERE id IN (1, 2, 3)») # rows = cur.fetchall() # for row in rows: # print(«{0} {1} {2}».format(row[0], row[1], row[2])) print(«The query affected {} rows».format(cur.rowcount))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #!/usr/bin/python3 # -*- coding: utf-8 -*-
import pymysql
con = pymysql. connect(‘localhost’, ‘user17’, ‘s$cret’, ‘mydb’)
with con:
cur = con.cursor() cur.execute(«SELECT * FROM cities WHERE id IN (1, 2, 3)»)
# rows = cur.fetchall()
# for row in rows: # print(«{0} {1} {2}».format(row[0], row[1], row[2]))
print(«The query affected {} rows».format(cur.rowcount)) |
В данном примере, показано, что используемый оператор SELECT
выбирает три строки.
Python
print(«The query affected {} rows».format(cur.rowcount))
print(«The query affected {} rows».format(cur.rowcount)) |
Таким образом, составляется сообщение, в котором показывается количество задействованных строк.
$ ./affected_rows.py The query affected 3 rows
$ . /affected_rows.py The query affected 3 rows |
Это результат вывода.
В данной инструкции было показано, как использовать базу данных MySQL в Python при помощи модуля PyMySQL.
Vasile Buldumac
Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.
E-mail: [email protected]
Образование
Universitatea Tehnică a Moldovei (utm.md)
- 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»
Методы fetchall, fetchmany(), fetchone() курсора Python для чтения записей из таблицы
В этой статье демонстрируется использование методов класса курсора Python fetchall()
, fetchmany()
и fetchone()
для извлечения строк из таблицы базы данных. Эта статья относится ко всем реляционным базам данных, например, SQLite , MySQL , PostgreSQL .
Python Database API Specification v2.0 ( PEP 249 ) был разработан для поощрения и поддержания сходства между модулями Python, используемыми для доступа к базам данных. Таким образом, не имеет значения, какую базу данных вы используете. Будь то синтаксис MySQL, PostgreSQL и SQLite, синтаксис функций и способ доступа к реляционной базе данных одинаковы во всех модулях базы данных.
Обычно мы используем следующий модуль Python для работы с базами данных.
Database | Module |
---|---|
MySQL | MySQL Connector Python |
PostgreSQL | Psycopg2 |
SQLite | sqlite3 |
Above all modules adhere to Python Database API Спецификация v2.0 (PEP 249).
Этот урок покажет, как использовать fetchall()
, fetchmany()
и fetchone()
для извлечения данных из баз данных MySQL, PostgreSQL, SQLite.
Сначала поймите, для чего используются функции fetchall, fetchmany(), fetchone().
cursor.fetchall()
извлекает все строки результата запроса. Он возвращает все строки в виде списка кортежей. Пустой список возвращается, если нет записей для извлечения.
cursor.fetchmany(size)
возвращает количество строк, указанное размер
аргумент. При повторном вызове этот метод извлекает следующий набор строк результата запроса и возвращает список кортежей. Если больше нет доступных строк, он возвращает пустой список.
cursor.fetchone()
Метод возвращает одну запись или None, если больше нет доступных строк.
Я создал таблицу database_developers в своей базе данных. Теперь он содержит пять строк. давайте посмотрим, как использовать fetchall для получения всех записей.
Теперь рассмотрим примеры.
sqlitedb_developers таблица с даннымиСодержание
- Извлечь все строки из таблицы базы данных с помощью курсора fetchall()
- Извлечь несколько строк из таблицы с помощью cursor.fetchmany(size)
- ) вызывается повторно
- Извлечение одной строки из таблицы с помощью cursor.fetchone
- Следующие шаги:
Извлечение всех строк из таблицы базы данных с помощью курсора fetchall()
Теперь посмотрим, как использовать fetchall
для получения всех записей. Чтобы получить все строки из таблицы базы данных, вам необходимо выполнить следующие простые шаги: –
- Создать соединение с базой данных из Python. Обратитесь к соединению Python SQLite, соединению Python MySQL, соединению Python PostgreSQL.
- Определите запрос SELECT. Здесь вам нужно знать таблицу и детали ее столбца.
- Выполните запрос SELECT, используя метод
cursor.execute()
. - Получить набор результатов (все строки) из объекта курсора с помощью
курсор.fetchall()
. - Перебрать ResultSet, используя цикл
for
, и получить значения столбца каждой строки. - Закройте соединение с базой данных Python.
- Перехват любых исключений SQL, которые могут возникнуть в процессе.
Попробуем получить все строки из таблицы.
импорт sqlite3 защита getAllRows(): пытаться: соединение = sqlite3.connect('SQLite_Python.db') курсор = соединение.курсор() print("Подключено к SQLite") sqlite_select_query = """SELECT * from database_developers""" курсор.execute(sqlite_select_query) записи = курсор.fetchall() print("Всего строк: ", len(records)) print("Печать каждой строки") для строки в записях: print("Идентификатор: ", строка[0]) print("Имя: ", строка[1]) print("Электронная почта: ", строка[2]) print("Зарплата: ", строка[3]) печать("\n") курсор. закрыть() кроме sqlite3.Error как ошибка: print("Не удалось прочитать данные из таблицы", ошибка) окончательно: если подключение: соединение.закрыть() print("Соединение Sqlite закрыто") получить все строки ()
Вывод:
Подключен к базе данных Всего строк: 5 Печать каждой строки Идентификатор: 1 Имя: Эмма Электронная почта: [email protected] Зарплата: 12000.0 Идентификатор: 2 Имя: Скотт Электронная почта: [email protected] Зарплата: 22000.0 Идентификатор: 3 Имя: Джесса Электронная почта: [email protected] Зарплата: 18000.0 Идентификатор: 4 Имя: Майк Электронная почта: [email protected] Зарплата: 13000.0 Идентификатор: 5 Имя: Рики Электронная почта: [email protected] Зарплата: 19000.0 Соединение Sqlite закрыто
Также прочитайте :
- Извлечь все строки из таблицы MySQL
- Извлечь все строки из таблицы PostgreSQL
Извлечь несколько строк из таблицы с помощью
cursor. fetchmany(size)
Что мне нравится в Python DB API, так это его гибкость. В реальном мире извлечение всех строк одновременно может оказаться невозможным. Таким образом, Python DB API решает эту проблему, предоставляя различные версии функции выборки класса Cursor. Наиболее часто используемая версия — cursor.fetchmany(size)
.
Синтаксис курсора fetchmany()
rows = cursor.fetchmany([size=cursor.arraysize])
- Здесь size это количество строк, которые нужно получить . Этот метод извлекает следующий набор строк результата запроса и возвращает список кортежей. Если больше нет доступных строк, он возвращает пустой список.
- Метод Cursor
fetchmany()
возвращает количество строк, указанное аргументом размера. значение по умолчанию равно 1. Если указанный размер равен 100, возвращается 100 строк.
Попробуем извлечь 3 строки из таблицы с помощью курсора . fetchmany(size)
import sqlite3 деф getlimitedRows (размер): пытаться: соединение = sqlite3.connect('SQLite_Python.db') курсор = соединение.курсор() print("Подключено к БД") sqlite_select_query = """SELECT * from database_developers""" курсор.execute(sqlite_select_query) записи = cursor.fetchmany(размер) print("Выбор всего ",размер,"строк") print("Печать каждой строки") для строки в записях: print("Идентификатор: ", строка[0]) print("Имя: ", строка[1]) print("Электронная почта: ", строка[2]) print("Зарплата: ", строка[3]) печать("\n") курсор.закрыть() кроме sqlite3.Error как ошибка: print("Не удалось прочитать данные из таблицы", ошибка) окончательно: если (соединение): соединение.закрыть() print("Соединение Sqlite закрыто") getlimitedRows(3)
Вывод:
Подключен к базе данных Получение всего 3 строк Печать каждой строки Идентификатор: 1 Имя: Эмма Электронная почта: emma@pynative. com Зарплата: 12000.0 Идентификатор: 2 Имя: Скотт Электронная почта: [email protected] Зарплата: 22000.0 Идентификатор: 3 Имя: Джесса Электронная почта: [email protected] Зарплата: 18000.0 Соединение Sqlite закрыто
Читайте также :
- Извлечение ограниченных строк из таблицы MySQL
- Извлечение ограниченных строк из таблицы PostgreSQL
Примечание :
-
fetchmany()
возвращает пустой список, когда в таблице больше нет доступных строк. - A
ProgrammingError
Возникает, если предыдущий вызовexecute*()
не привел к набору результатов или вызов еще не был выполнен. -
fetchmany()
возвращает меньше строк, если таблица содержит меньшее количество строк, заданное аргументомSIZE
.
Что произойдет, если fetchmany(size) курсора будет вызываться повторно
Что произойдет, если мы повторно вызовем cursor. fetchmany(size)
после выполнения SQL-запроса.
Например, мы выполнили запрос, и он вернул результат запроса из 10 строк. Затем мы получили первые две строки, используя cursor.fetchmany(2)
. Опять же, мы вызвали cursor.fetchmany(2)
, тогда он вернет следующие две строки. Давайте посмотрим на пример, чтобы понять это лучше.
импорт sqlite3 деф getlimitedRows (размер): пытаться: соединение = sqlite3.connect('SQLite_Python.db') курсор = соединение.курсор() print("Подключено к БД") sqlite_select_query = """SELECT * from database_developers""" курсор.execute(sqlite_select_query) записи = cursor.fetchmany(размер) print("Итог получен", размер, "строки") print("Печать каждой строки") для строки в записях: print("Идентификатор: ", строка[0]) print("Имя: ", строка[1]) print("Электронная почта: ", строка[2]) print("Зарплата: ", строка[3]) печать("\n") записи = cursor. fetchmany(размер) print("Извлекаем следующие 2 строки из таблицы") print("Печать каждой строки") для строки в записях: print("Идентификатор: ", строка[0]) print("Имя: ", строка[1]) print("Электронная почта: ", строка[2]) print("Зарплата: ", строка[3]) печать("\n") курсор.закрыть() кроме sqlite3.Error как ошибка: print("Не удалось прочитать данные из таблицы", ошибка) окончательно: если подключение: соединение.закрыть() print("Соединение Sqlite закрыто") получитьлимитедРоус(2)
Вывод:
Подключен к базе данных Получение всего 2 строк Печать каждой строки Идентификатор: 1 Имя: Эмма Электронная почта: [email protected] Зарплата: 12000.0 Идентификатор: 2 Имя: Скотт Электронная почта: [email protected] Зарплата: 22000.0 Извлечение следующих 2 строк из таблицы Печать каждой строки Идентификатор: 3 Имя: Джесса Электронная почта: jessa@pynative. com Зарплата: 18000.0 Идентификатор: 4 Имя: Майк Электронная почта: [email protected] Зарплата: 13000.0 Соединение Sqlite закрыто
- Python DB API позволяет нам получить только одну строку. Чтобы получить одну строку из набора результатов, мы можем использовать
курсор.fetchone()
. Этот метод возвращает один кортеж. - Может возвращать значение None, если в результирующем наборе нет доступных строк.
cursor.fetchone()
увеличивает позицию курсора на единицу и возвращает следующую строку.
Теперь посмотрим на пример.
импорт sqlite3 защита getSingleRows(): пытаться: соединение = sqlite3.connect('SQLite_Python.db') курсор = соединение.курсор() print("Подключено к БД") sqlite_select_query = """SELECT * from database_developers""" курсор.execute(sqlite_select_query) print("Выбор одной строки") запись = курсор.fetchone() печать (запись) print("Выборка следующей строки") запись = курсор. fetchone() печать (запись) курсор.закрыть() кроме sqlite3.Error как ошибка: print("Не удалось прочитать данные из таблицы", ошибка) окончательно: если подключение: соединение.закрыть() print("Соединение Sqlite закрыто") получить одиночные строки ()
Вывод:
Подключен к базе данных Получение одной строки (1, «Эмма», «[email protected]», 12000.0) Получение следующей строки (2, «Скотт», «[email protected]», 22000.0) Соединение Sqlite закрыто
Следующие шаги:
Чтобы попрактиковаться в том, что вы узнали из этой статьи, выполните проект Упражнение Python SQLite для отработки операций с базой данных.
Запрос данных из базы данных с помощью fetchone() и fetchall()
fetchone() и fetchall() являются методами Соединитель Python MySQL, и они используются для отображения данных. Этот коннектор помогает программам Python использовать базы данных MySQL. В приведенном ниже коде мы использовали MySQL с использованием Python для написания всех запросов и извлечения всех данных из баз данных.
1. Fetchone(): Метод Fetchone() используется, когда необходимо получить только первую строку из таблицы. Метод возвращает только первую строку из определенной таблицы. Этот метод также используется, когда мы хотим использовать метод cursor() для итерации. Этот метод увеличивает позицию курсора на 1, после чего возвращает следующую строку.
Этот метод нельзя использовать для объекта курсора, вместо этого мы запускаем запрос с использованием оператора SQL, т. е. «SELECT *», который выбирает первую строку/кортеж из таблицы. После этого мы используем метод fetchone() для переменной результата, возвращаемой оператором «SELECT *». Теперь метод извлекает первую строку из этого результата.
Синтаксис:
row = cursor.fetchone()
Шаги по использованию fetchone() в Mysql с использованием Python:
- Первый. импортировать коннектор MySQL
- Теперь создайте соединение с коннектором MySQL, используя метод connect()
- Затем создайте объект курсора с помощью метода cursor()
- Теперь создайте и выполните запрос, используя оператор «SELECT *» с execute( ) для получения данных
- Используйте метод fetchone() для переменной результата.
- вывести результат
Пример:
Предположим, есть таблица с именем «CUSTOMERS» и мы хотим получить из нее только первую строку, поэтому нам нужно запустить приведенный ниже код.
Python
|
Выход:
2. Fetchall (). последний выполненный оператор из таблицы (возвращает список кортежей). Метод возвращает только первую строку из определенной таблицы, и если кортежей нет, он возвращает пустой список на выходе.
Этот метод нельзя использовать для объекта курсора, вместо этого мы запускаем запрос с использованием оператора SQL, т. е. «SELECT *», который извлекает все строки/кортежи из таблицы. После этого мы используем метод fetchall() для переменной результата, возвращаемой оператором «SELECT *».
Синтаксис:
row = cursor.fetchall()
Шаги по использованию fetchall() в Mysql с использованием Python:
- Первый. импортировать коннектор MySQL
- Теперь создайте соединение с коннектором MySQL, используя метод connect()
- Затем создайте объект курсора с помощью метода cursor()
- Теперь создайте и выполните запрос, используя оператор «SELECT *» с execute( ) метод для получения данных
- Используйте метод fetchall() для переменной результата.
- распечатать результат, используя для каждого цикла, чтобы отобразить все
Пример:
Предположим, есть таблица с именем «CUSTOMERS» и мы хотим получить из нее все строки, поэтому мы должны запустить приведенный ниже код.
Python
|