Psycopg2: Driver PostgreSQL para Python

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Psycopg2: Guia completo para trabalhar com PostgreSQL em Python

Introdução

PostgreSQL é um poderoso sistema de gerenciamento de banco de dados relacional de código aberto, conhecido por sua confiabilidade, escalabilidade e suporte a tipos de dados complexos. Para trabalhar com PostgreSQL a partir do Python, a ferramenta mais popular e confiável é o Psycopg2 — o driver síncrono oficial que oferece uma solução estável e de alto desempenho para conectar-se ao banco de dados, executar consultas SQL, gerenciar transações e integrar-se com frameworks web.

O Psycopg2 é o padrão de facto para trabalhar com PostgreSQL em projetos Python, graças à sua maturidade, completeza funcional e suporte ativo da comunidade de desenvolvedores.

O que é Psycopg2

Psycopg2 é um adaptador Python para PostgreSQL, escrito em linguagem C utilizando a libpq (a biblioteca cliente oficial do PostgreSQL). A biblioteca oferece conformidade total com a especificação DB-API 2.0 e fornece diversos recursos adicionais específicos do PostgreSQL.

Principais características do Psycopg2:

  • Alta performance: Graças à implementação em C e à interação otimizada com a libpq
  • Segurança: Proteção integrada contra injeção de SQL através de consultas parametrizadas
  • Suporte a transações: Controle total sobre transações com gerenciamento automático
  • Compatibilidade de tipos de dados: Conversão automática entre tipos PostgreSQL e Python
  • Suporte a extensões: Trabalhe com JSON, UUID, arrays, hstore e outros tipos de dados do PostgreSQL
  • Thread-safe: Possibilidade de uso em aplicações multi-thread

Instalação e configuração

Instalação da biblioteca

pip install psycopg2-binary

Para ambientes de produção, recomenda-se usar a versão completa:

pip install psycopg2

Requisitos de sistema

Antes de instalar, verifique se as dependências necessárias estão instaladas no sistema:

Ubuntu/Debian:

sudo apt-get install libpq-dev python3-dev

CentOS/RHEL:

sudo yum install postgresql-devel python3-devel

macOS:

brew install postgresql

Conexão com o banco de dados

Conexão básica

import psycopg2

# Conectando ao PostgreSQL
conn = psycopg2.connect(
    dbname="mydb",
    user="postgres", 
    password="password",
    host="localhost",
    port="5432"
)

# Criando um cursor
cur = conn.cursor()

Conexão via string de conexão

conn = psycopg2.connect("postgresql://user:password@localhost:5432/dbname")

Conexão com parâmetros adicionais

conn = psycopg2.connect(
    dbname="mydb",
    user="postgres",
    password="password",
    host="localhost",
    port="5432",
    sslmode="require",
    connect_timeout=10,
    application_name="my_app"
)

Usando gerenciadores de contexto

import psycopg2
from contextlib import contextmanager

@contextmanager
def get_db_connection():
    conn = psycopg2.connect(
        dbname="mydb",
        user="postgres",
        password="password",
        host="localhost"
    )
    try:
        yield conn
    finally:
        conn.close()

# Utilização
with get_db_connection() as conn:
    with conn.cursor() as cur:
        cur.execute("SELECT * FROM users")
        results = cur.fetchall()

Recommendations