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