PostgreSQL - Interface Python

Instalação

O PostgreSQL pode ser integrado ao Python usando o módulo psycopg2. sycopg2 é um adaptador de banco de dados PostgreSQL para a linguagem de programação Python. psycopg2 foi escrito com o objetivo de ser muito pequeno, rápido e estável como uma rocha. Você não precisa instalar este módulo separadamente porque ele é enviado, por padrão, junto com o Python versão 2.5.x em diante.

Se você não o tem instalado em sua máquina, você pode usar o comando yum para instalá-lo da seguinte maneira -

$yum install python-psycopg2

Para usar o módulo psycopg2, você deve primeiro criar um objeto Connection que representa o banco de dados e, em seguida, opcionalmente, pode criar um objeto cursor que o ajudará a executar todas as instruções SQL.

APIs de módulo Python psycopg2

A seguir estão importantes rotinas do módulo psycopg2, que podem ser suficientes para seus requisitos para trabalhar com o banco de dados PostgreSQL de seu programa Python. Se você está procurando um aplicativo mais sofisticado, pode consultar a documentação oficial do módulo Python psycopg2.

S. No. API e descrição
1

psycopg2.connect(database="testdb", user="postgres", password="cohondob", host="127.0.0.1", port="5432")

Esta API abre uma conexão com o banco de dados PostgreSQL. Se o banco de dados for aberto com sucesso, ele retorna um objeto de conexão.

2

connection.cursor()

Esta rotina cria um cursor que será usado em toda a sua programação de banco de dados com Python.

3

cursor.execute(sql [, optional parameters])

Esta rotina executa uma instrução SQL. A instrução SQL pode ser parametrizada (ou seja, marcadores de posição em vez de literais SQL). O módulo psycopg2 suporta placeholder usando o sinal% s

Por exemplo: cursor.execute ("inserir valores de pessoas (% s,% s)", (quem, idade))

4

cursor.executemany(sql, seq_of_parameters)

Esta rotina executa um comando SQL em todas as sequências de parâmetros ou mapeamentos encontrados na sequência sql.

5

cursor.callproc(procname[, parameters])

Esta rotina executa um procedimento de banco de dados armazenado com o nome fornecido. A seqüência de parâmetros deve conter uma entrada para cada argumento que o procedimento espera.

6

cursor.rowcount

Este atributo somente leitura que retorna o número total de linhas do banco de dados que foram modificadas, inseridas ou excluídas pelo último execute * ().

7

connection.commit()

Este método confirma a transação atual. Se você não chamar este método, tudo o que você fez desde a última chamada para commit () não será visível em outras conexões de banco de dados.

8

connection.rollback()

Este método reverte qualquer mudança no banco de dados desde a última chamada para commit ().

9

connection.close()

Este método fecha a conexão com o banco de dados. Observe que isso não chama commit () automaticamente. Se você apenas fechar a conexão do banco de dados sem chamar commit () primeiro, suas alterações serão perdidas!

10

cursor.fetchone()

Este método busca a próxima linha de um conjunto de resultados de consulta, retornando uma única sequência, ou Nenhum quando não há mais dados disponíveis.

11

cursor.fetchmany([size=cursor.arraysize])

Esta rotina busca o próximo conjunto de linhas de um resultado de consulta, retornando uma lista. Uma lista vazia é retornada quando não há mais linhas disponíveis. O método tenta buscar quantas linhas forem indicadas pelo parâmetro de tamanho.

12

cursor.fetchall()

Esta rotina busca todas as linhas (restantes) de um resultado de consulta, retornando uma lista. Uma lista vazia é retornada quando nenhuma linha está disponível.

Conectando 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 psycopg2

conn = psycopg2.connect(database="testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")

print "Opened database successfully"

Aqui, você também pode fornecer banco de dados testdb como nome e se o banco de dados for aberto com sucesso, ele apresentará a seguinte mensagem -

Open database successfully

Crie uma mesa

O seguinte programa Python será usado para criar uma tabela no banco de dados criado anteriormente -

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()
cur.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.commit()
conn.close()

Quando o programa fornecido 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 INSERT

O programa Python a seguir mostra como podemos criar registros em nossa tabela COMPANY criada no exemplo acima -

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (1, 'Paul', 32, 'California', 20000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");

cur.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 fornecido acima for executado, ele criará determinados registros na tabela COMPANY e exibirá as duas linhas a seguir -

Opened database successfully
Records created successfully

SELECT Operação

O programa Python a seguir mostra como podemos buscar e exibir registros de nossa tabela COMPANY criada no exemplo acima -

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("SELECT id, name, address, salary  from COMPANY")
rows = cur.fetchall()
for row in rows:
   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 fornecido 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 ATUALIZAR

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

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1")
conn.commit()
print "Total number of rows updated :", cur.rowcount

cur.execute("SELECT id, name, address, salary  from COMPANY")
rows = cur.fetchall()
for row in rows:
   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 fornecido 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

Operação DELETE

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

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("DELETE from COMPANY where ID=2;")
conn.commit()
print "Total number of rows deleted :", cur.rowcount

cur.execute("SELECT id, name, address, salary  from COMPANY")
rows = cur.fetchall()
for row in rows:
   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 fornecido 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