Python - bancos de dados e SQL

A linguagem de programação Python possui recursos poderosos para programação de banco de dados. Python oferece suporte a vários bancos de dados como SQLite, MySQL, Oracle, Sybase, PostgreSQL, etc. Python também oferece suporte a Linguagem de Definição de Dados (DDL), Linguagem de Manipulação de Dados (DML) e Instruções de Consulta de Dados. O padrão Python para interfaces de banco de dados é o Python DB-API. A maioria das interfaces de banco de dados Python segue esse padrão.

Aqui está a lista de interfaces de banco de dados Python disponíveis: Interfaces de banco de dados Python e APIs . Você deve baixar um módulo de API de banco de dados separado para cada banco de dados que você precisa acessar.

Neste capítulo, veremos o uso do banco de dados SQLite na linguagem de programação python. Isso é feito usando o módulo sqlite3 embutido do python. Você deve primeiro criar um objeto de conexão que representa o banco de dados e, em seguida, criar alguns objetos de cursor para executar instruções SQL.

Conectar ao banco de dados

O código Python a seguir mostra como se conectar a um banco de dados existente. Se o banco de dados não existir, ele será criado e, finalmente, um objeto de banco de dados será retornado.

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";

Aqui, você também pode fornecer o nome do banco de dados como o nome especial :memory:para criar um banco de dados na RAM. Agora, vamos executar o programa acima para criar nosso banco de dadostest.dbno diretório atual. Você pode alterar seu caminho de acordo com sua necessidade. Mantenha o código acima no arquivo sqlite.py e execute-o conforme mostrado abaixo. Se o banco de dados for criado com sucesso, ele exibirá a seguinte mensagem.

$chmod +x sqlite.py $./sqlite.py
Open database successfully

Crie uma mesa

O programa Python a seguir será usado para criar uma tabela no banco de dados criado anteriormente.

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute('''CREATE TABLE COMPANY
         (ID INT PRIMARY KEY     NOT NULL,
         NAME           TEXT    NOT NULL,
         AGE            INT     NOT NULL,
         ADDRESS        CHAR(50),
         SALARY         REAL);''')
print "Table created successfully";
conn.close()

Quando o programa acima for executado, ele criará a tabela COMPANY em seu test.db e exibirá as seguintes mensagens -

Opened database successfully
Table created successfully

Operação de inserção

O programa Python a seguir mostra como criar registros na tabela COMPANY criada no exemplo acima.

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (1, 'Paul', 32, 'California', 20000.00 )");
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");
conn.commit()
print "Records created successfully";
conn.close()

Quando o programa acima for executado, ele criará os registros fornecidos na tabela COMPANY e exibirá as duas linhas a seguir -

Opened database successfully
Records created successfully

Selecione a operação

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

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"
print "Operation done successfully";
conn.close()

Quando o programa acima for executado, ele produzirá o seguinte resultado.

Opened database successfully
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000.0
ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000.0
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0
Operation done successfully

Operação de atualização

O código Python a seguir mostra como usar a instrução UPDATE para atualizar qualquer registro e, em seguida, buscar e exibir os registros atualizados da tabela COMPANY.

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1")
conn.commit
print "Total number of rows updated :", conn.total_changes
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"
print "Operation done successfully";
conn.close()

Quando o programa acima for executado, ele produzirá o seguinte resultado.

Opened database successfully
Total number of rows updated : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 25000.0
ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000.0
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0
Operation done successfully

Excluir operação

O código Python a seguir mostra como usar a instrução DELETE para excluir qualquer registro e, em seguida, buscar e exibir os registros restantes da tabela COMPANY.

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute("DELETE from COMPANY where ID = 2;")
conn.commit()
print "Total number of rows deleted :", conn.total_changes
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"
print "Operation done successfully";
conn.close()

Quando o programa acima for executado, ele produzirá o seguinte resultado.

Opened database successfully
Total number of rows deleted : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000.0
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0
Operation done successfully