Python SQLite - Selecionar dados

Você pode recuperar dados de uma tabela SQLite usando a consulta SELECT. Esta consulta / instrução retorna o conteúdo da relação especificada (tabela) em forma tabular e é chamada de conjunto de resultados.

Sintaxe

A seguir está a sintaxe da instrução SELECT no SQLite -

SELECT column1, column2, columnN FROM table_name;

Exemplo

Suponha que criamos uma tabela com o nome CRICKETERS usando a seguinte consulta -

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

E se tivermos inserido 5 registros nele usando instruções INSERT como -

sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>

A consulta SELECT seguinte recupera os valores das colunas FIRST_NAME, LAST_NAME e, COUNTRY da tabela CRICKETERS.

sqlite> SELECT FIRST_NAME, LAST_NAME, COUNTRY FROM CRICKETERS;
Shikhar   |Dhawan       |India
Jonathan  |Trott        |SouthAfrica
Kumara    |Sangakkara   |Srilanka
Virat     |Kohli        |India
Rohit     |Sharma       |India
sqlite>

Como você pode observar, a instrução SELECT do banco de dados SQLite apenas retorna os registros das tabelas especificadas. Para obter uma saída formatada, você precisa definir oheader, e mode usando os respectivos comandos antes da instrução SELECT, conforme mostrado abaixo -

sqlite> .header on
sqlite> .mode column
sqlite> SELECT FIRST_NAME, LAST_NAME, COUNTRY FROM CRICKETERS;
First_Name   Last_Name    Country
----------   ----------   ----------
Shikhar      Dhawan       India
Jonathan     Trott        SouthAfric
Kumara       Sangakkara   rilanka
Virat        Kohli        India
Rohit        Sharma       India

Se você deseja recuperar todas as colunas de cada registro, você precisa substituir os nomes das colunas por "*" conforme mostrado abaixo -

sqlite> .header on
sqlite> .mode column
sqlite> SELECT * FROM CRICKETERS;
First_Name   Last_Name    Age        Place_Of_Birth   Country
----------   ----------   -------    --------------   ----------
Shikhar      Dhawan       33         Delhi            India
Jonathan     Trott        38         CapeTown         SouthAfric
Kumara       Sangakkara   41         Matale           Srilanka
Virat        Kohli        30         Delhi            India
Rohit        Sharma       32         Nagpur           India
sqlite>

No SQLite, por padrão, a largura das colunas é de 10 valores além desta largura são cortados (observe a coluna do país da linha na tabela acima). Você pode definir a largura de cada coluna para o valor necessário usando o.width comando, antes de recuperar o conteúdo de uma tabela, conforme mostrado abaixo -

sqlite> .width 10, 10, 4, 10, 13
sqlite> SELECT * FROM CRICKETERS;
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   --------
Shikhar      Dhawan       33     Delhi        India
Jonathan     Trott        38     CapeTown     SouthAfrica
Kumara       Sangakkara   41     Matale       Srilanka
Virat        Kohli        30     Delhi        India
Rohit        Sharma       32     Nagpur       India
sqlite>

Recuperando dados usando Python

A operação READ em qualquer banco de dados significa buscar algumas informações úteis do banco de dados. Você pode buscar dados do MYSQL usando o método fetch () fornecido pelo módulo sqlite python.

A classe sqlite3.Cursor fornece três métodos: fetchall (), fetchmany () e fetchone () onde,

  • O método fetchall () recupera todas as linhas no conjunto de resultados de uma consulta e as retorna como uma lista de tuplas. (Se executarmos isso depois de recuperar algumas linhas, ele retornará as restantes).

  • O método fetchone () busca a próxima linha no resultado de uma consulta e a retorna como uma tupla.

  • O método fetchmany () é semelhante ao fetchone (), mas recupera o próximo conjunto de linhas no conjunto de resultados de uma consulta, em vez de uma única linha.

Note - Um conjunto de resultados é um objeto que é retornado quando um objeto cursor é usado para consultar uma tabela.

Exemplo

O exemplo a seguir busca todas as linhas da tabela EMPLOYEE usando a consulta SELECT e, do conjunto de resultados obtido inicialmente, estamos recuperando a primeira linha usando o método fetchone () e, em seguida, obtendo as linhas restantes usando o método fetchall ().

O programa Python a seguir mostra como buscar e exibir registros da tabela COMPANY criada no exemplo acima.

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Retrieving data
cursor.execute('''SELECT * from EMPLOYEE''')

#Fetching 1st row from the table
result = cursor.fetchone();
print(result)

#Fetching 1st row from the table
result = cursor.fetchall();
print(result)

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

Resultado

('Ramya', 'Rama priya', 27, 'F', 9000.0)
[
   ('Vinay', 'Battacharya', 20, 'M', 6000.0),
   ('Sharukh', 'Sheik', 25, 'M', 8300.0),
   ('Sarmista', 'Sharma', 26, 'F', 10000.0),
   ('Tripthi', 'Mishra', 24, 'F', 6000.0)
]