📖 Site oficial do SQLAlchemy (Documentação)
| # | Comando / Função | O que faz | Exemplo |
|---|---|---|---|
| 1 | create_engine() | Cria a conexão principal com o banco | engine = create_engine('sqlite:///db.sqlite') |
| 2 | declarative_base() | Classe base para modelos ORM | Base = declarative_base() |
| 3 | sessionmaker() | Fábrica de sessões para transações | Session = sessionmaker(bind=engine) |
| 4 | Base.metadata.create_all() | Cria todas as tabelas no banco de dados | Base.metadata.create_all(engine) |
| 5 | engine.connect() | Abre uma conexão de baixo nível (Core) | with engine.connect() as conn: |
| 6 | Column() | Define uma coluna na tabela | name = Column(String(50)) |
| 7 | Integer | Tipo de dado: Inteiro | id = Column(Integer, primary_key=True) |
| 8 | String() | Tipo de dado: Texto com limite | email = Column(String(100), unique=True) |
| 9 | Float | Tipo de dado: Ponto flutuante | price = Column(Float) |
| 10 | Boolean | Tipo de dado: Booleano | is_active = Column(Boolean) |
| 11 | DateTime | Tipo de dado: Data e Hora | created_at = Column(DateTime) |
| 12 | ForeignKey() | Define chave estrangeira | user_id = Column(ForeignKey('users.id')) |
| 13 | relationship() | Cria relação entre objetos ORM | posts = relationship("Post", backref="author") |
| 14 | primary_key=True | Define coluna como chave primária | id = Column(Integer, primary_key=True) |
| 15 | nullable=False | Define que o campo é obrigatório | name = Column(String, nullable=False) |
| 16 | default= | Define valor padrão para a coluna | status = Column(String, default='pending') |
| 17 | session.add() | Adiciona um objeto à sessão | session.add(novo_usuario) |
| 18 | session.add_all() | Adiciona lista de objetos | session.add_all([u1, u2]) |
| 19 | session.commit() | Confirma as alterações no banco | session.commit() |
| 20 | session.rollback() | Reverte alterações não confirmadas | session.rollback() |
| 21 | session.delete() | Marca um objeto para exclusão | session.delete(usuario) |
| 22 | session.query() | Inicia uma consulta ORM | session.query(User).all() |
| 23 | session.refresh() | Atualiza objeto com dados do banco | session.refresh(objeto) |
| 24 | session.close() | Fecha a sessão manual | session.close() |
| 25 | .all() | Retorna todos os resultados como lista | query.all() |
| 26 | .first() | Retorna apenas o primeiro resultado | query.first() |
| 27 | .one() | Retorna exatamente um ou erro | query.one() |
| 28 | .get() | Busca pela chave primária | session.query(User).get(1) |
| 29 | .filter() | Filtra resultados (expressões SQL) | query.filter(User.age > 18) |
| 30 | .filter_by() | Filtra por argumentos nomeados | query.filter_by(name='Joao') |
| 31 | .order_by() | Ordena os resultados | query.order_by(User.name.desc()) |
| 32 | .limit() | Limita o número de resultados | query.limit(10) |
| 33 | .offset() | Pula N resultados (paginação) | query.offset(20) |
| 34 | .count() | Conta o número de registros | query.count() |
| 35 | .join() | Realiza um INNER JOIN | query.join(Post) |
| 36 | .outerjoin() | Realiza um LEFT OUTER JOIN | query.outerjoin(Post) |
| 37 | and_() | Operador lógico E | filter(and_(cond1, cond2)) |
| 38 | or_() | Operador lógico OU | filter(or_(cond1, cond2)) |
| 39 | not_() | Operador lógico NÃO | filter(not_(User.id == 1)) |
| 40 | .like() | Busca padrão (case sensitive) | User.name.like('%Ana%') |
| 41 | .ilike() | Busca padrão (case insensitive) | User.name.ilike('%ana%') |
| 42 | .in_() | Verifica se valor está na lista | User.id.in_([1, 2, 3]) |
| 43 | .is_() | Compara com NULL ou Booleanos | User.email.is_(None) |
| 44 | .between() | Intervalo de valores | User.age.between(20, 30) |
| 45 | func.count() | Função SQL COUNT | session.query(func.count(User.id)) |
| 46 | func.sum() | Função SQL SUM | session.query(func.sum(Order.total)) |
| 47 | func.avg() | Função SQL AVG (Média) | session.query(func.avg(User.age)) |
| 48 | .group_by() | Agrupamento de registros | query.group_by(User.city) |
| 49 | .having() | Filtro pós-agrupamento | query.having(func.count() > 5) |
| 50 | Table() | Define tabela no estilo Core | Table('name', metadata, ...) |
| 51 | select() | Instrução SELECT (Core) | select([users_table]) |
| 52 | insert() | Instrução INSERT (Core) | users_table.insert().values(name='X') |
| 53 | update() | Instrução UPDATE (Core) | update(User).where(id=1).values(name='Y') |
| 54 | text() | Executa SQL puro (string) safely | session.execute(text("SELECT * FROM u")) |
| 55 | alias() | Cria um apelido para tabela | u_alias = User.alias() |
| 56 | lazy='select' | Carregamento padrão (sob demanda) | relationship(..., lazy='select') |
| 57 | lazy='joined' | Eager loading (usa JOIN) | relationship(..., lazy='joined') |
| 58 | lazy='dynamic' | Retorna query em vez de lista | relationship(..., lazy='dynamic') |
| 59 | joinedload() | Carregamento otimizado de relações | query.options(joinedload(User.posts)) |
| 60 | back_populates | Sincroniza relações bidirecionais | back_populates="owner" |
| 61 | cascade | Define comportamento de exclusão | cascade="all, delete-orphan" |
| 62 | Index() | Cria índice em colunas | Index('idx_name', User.name) |
| 63 | UniqueConstraint | Garante unicidade em múltiplas colunas | UniqueConstraint('a', 'b') |
| 64 | CheckConstraint | Validação a nível de banco | CheckConstraint('age > 0') |
| 65 | Enum | Tipo de coluna enumerada | Column(Enum('admin', 'user')) |
| 66 | BigInteger | Inteiro de 64 bits | Column(BigInteger) |
| 67 | Text | Campos de texto longo (CLOB) | Column(Text) |
| 68 | Numeric | Precisão decimal exata | Column(Numeric(10, 2)) |
| 69 | inspect() | Inspeciona estados de objetos | inspect(usuario).persistent |
| 70 | distinct() | Remove duplicatas da query | session.query(User.city).distinct() |
| 71 | Label | Dá nome a uma coluna calculada | (User.age * 2).label('double_age') |
| 72 | union() | Une dois resultados de query | q1.union(q2) |
| 73 | scalar() | Retorna o primeiro valor da primeira linha | query.scalar() |
| 74 | execution_options() | Configurações de execução | stream_results=True |
| 75 | engine.dispose() | Fecha o pool de conexões | engine.dispose() |
| 76 | MetaData() | Coleção de definições de tabelas | metadata = MetaData() |
| 77 | Sequence() | Gera sequências numéricas | Column(Integer, Sequence('id_seq')) |
| 78 | JSON | Suporte a colunas JSON | Column(JSON) |
| 79 | ARRAY | Suporte a arrays (PostgreSQL) | Column(ARRAY(Integer)) |
| 80 | synonym() | Cria um apelido para atributo | synonym('_name', descriptor=name) |
| 81 | hybrid_property | Atributos que funcionam em Python/SQL | @hybrid_property |
| 82 | scoped_session | Thread-local session container | session = scoped_session(...) |
| 83 | yield_per(n) | Carrega registros em lotes de N | query.yield_per(100) |
| 84 | subquery() | Transforma query em subconsulta | sub = query.subquery() |
| 85 | exists() | Cláusula EXISTS em filtros | query.filter(exists().where(...)) |
| 86 | any_() | Coleção contém elemento (Postgres) | Column.any(value) |
| 87 | all_() | Todos elementos da coleção (Postgres) | Column.all(value) |
| 88 | desc() | Ordenação decrescente | User.id.desc() |
| 89 | asc() | Ordenação crescente | User.id.asc() |
| 90 | nullsfirst() | Coloca nulos no início | User.name.nullsfirst() |
| 91 | nullslast() | Coloca nulos no fim | User.name.nullslast() |
| 92 | values() | Extrai apenas valores específicos | query.values(User.name) |
| 93 | params() | Passa parâmetros para query text() | query.params(id=10) |