Получение результатов запроса — 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

$ 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() позволяет вызвать следующую строку из набора результатов запроса, показывая только одну запись. В том случае, если доступных данных нет, выводится

None.

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

import mysql.connector

   

mydb = mysql.connector.connect(

   host = "localhost « ,

Пользователь = " Yourusername " ,

Пароль =

=

0003 "yourpass" ,

   database = "yourdatabase"

)

   

mycursor = mydb. cursor()

Mycursor.Execute ( "SELECT * от клиентов" )

Результат = Mycursor.fetchone () .0004

Печать (результат)

Выход:

2. Fetchall (). последний выполненный оператор из таблицы (возвращает список кортежей). Метод возвращает только первую строку из определенной таблицы, и если кортежей нет, он возвращает пустой список на выходе.

Этот метод нельзя использовать для объекта курсора, вместо этого мы запускаем запрос с использованием оператора SQL, т. е. «SELECT *», который извлекает все строки/кортежи из таблицы. После этого мы используем метод fetchall() для переменной результата, возвращаемой оператором «SELECT *».

Синтаксис:

row = cursor.fetchall()

Шаги по использованию fetchall() в Mysql с использованием Python:

  • Первый. импортировать коннектор MySQL
  • Теперь создайте соединение с коннектором MySQL, используя метод connect()
  • Затем создайте объект курсора с помощью метода cursor()
  • Теперь создайте и выполните запрос, используя оператор «SELECT *» с execute( ) метод для получения данных
  • Используйте метод fetchall() для переменной результата.
  • распечатать результат, используя для каждого цикла, чтобы отобразить все

Пример:

Предположим, есть таблица с именем «CUSTOMERS» и мы хотим получить из нее все строки, поэтому мы должны запустить приведенный ниже код.

Python

Импорт MySQL. Connector

.comnectneclnemneclnnectneclnneclnneclnnectneclnemneclneclnemnect. .connector.connectrnecklnecklnecklnecklnecklnecklnect.0004 = "localhost" ,

   user = "yourusername" ,

   password = "yourpass" ,

База данных = "yourDatabase"

)

Mycursor = MyD0004

   

mycursor.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *