Que métodos de trabalho com bases de dados conhece?
sobes.tech IA
Resposta da IA
-
Módulos integrados:
sqlite3- para trabalhar com o leve SGBD SQLite. Útil para projetos pequenos ou para usar como base de dados de ficheiros no cliente.import sqlite3 # Conexão à base de dados (criará o ficheiro se não existir) conn = sqlite3.connect('mydatabase.db') cursor = conn.cursor() # Criar tabela cursor.execute(''' CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER ) ''') # Inserir dados cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('Alice', 30)) # Confirmar alterações conn.commit() # Obter dados cursor.execute("SELECT name, age FROM users") rows = cursor.fetchall() for row in rows: print(row) # Fechar conexão conn.close() -
API Python DB (PEP-249):
Interface padrão que a maioria dos controladores de terceiros para diferentes bases de dados (PostgreSQL, MySQL, Oracle, etc.) definem. Permite escrever código que não depende de uma base de dados específica. -
Controladores/conectores especializados:
Bibliotecas que implementam Python DB API para bases de dados específicas:psycopg2- para PostgreSQL.mysql-connector-pythonouPyMySQL- para MySQL.cx_Oracle- para Oracle.pymssql- para Microsoft SQL Server.
import psycopg2 # Conexão ao PostgreSQL try: conn = psycopg2.connect( host="localhost", database="mydatabase", user="myuser", password="mypassword" ) cursor = conn.cursor() # Executar consulta SQL cursor.execute("SELECT * FROM products;") results = cursor.fetchall() for row in results: print(row) conn.close() except psycopg2.Error as e: print(f"Erro ao conectar à base de dados: {e}") -
ORM (Object-Relational Mapping):
Frameworks que permitem trabalhar com bases de dados usando objetos Python, em vez de consultas SQL diretamente. Simplificam a interação com a base de dados, fornecem abstração, ajudam a evitar injeções SQL.- SQLAlchemy - uma das ORM mais poderosas e flexíveis em Python. Suporta múltiplos SGBDs, fornece tanto "Core" (para trabalhar ao nível SQL) quanto "ORM" (para abordagem orientada a objetos).
- Django ORM - ORM embutido no framework Django, muito conveniente para trabalhar com bases de dados no contexto de aplicações web Django.
- Peewee - ORM simples e leve.
Exemplo com SQLAlchemy Core:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select # Conexão à base de dados (por exemplo, SQLite) engine = create_engine('sqlite:///mydatabase.db') # Objeto MetaData para armazenar metadados da base de dados metadata = MetaData() # Definição da tabela users_table = Table( 'users', metadata, Column('id', Integer, primary_key=True), Column('name', String), Column('age', Integer) ) # Criar a tabela na base de dados (se não existir) metadata.create_all(engine) # Estabelecer conexão with engine.connect() as connection: # Inserir dados connection.execute( users_table.insert().values(name='Bob', age=25) ) # Selecionar dados select_query = select(users_table) result = connection.execute(select_query) for row in result: print(row)Exemplo com SQLAlchemy ORM:
from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker # Conexão à base de dados engine = create_engine('sqlite:///mydatabase_orm.db') # Classe base para modelos ORM Base = declarative_base() # Definição do modelo ORM class User(Base): __tablename__ = 'users_orm' id = Column(Integer, primary_key=True) name = Column(String) age = Column(Integer) def __repr__(self): return f"<User(name='{self.name}', age={self.age})>" # Criar a tabela (se não existir) Base.metadata.create_all(engine) # Criar fábrica de sessões Session = sessionmaker(bind=engine) session = Session() # Criar e adicionar objeto new_user = User(name='Charlie', age=40) session.add(new_user) # Confirmar transação session.commit() # Obter objeto user = session.query(User).filter_by(name='Charlie').first() print(user) # Fechar sessão session.close() -
Bases de dados NoSQL:
Para trabalhar com bases NoSQL, usam-se bibliotecas especializadas, por exemplo:pymongo- para MongoDB.redis- para Redis.cassandra-driver- para Cassandra.
A escolha do método depende dos requisitos do projeto, do tipo de SGBD utilizado, da necessidade de ORM e do nível de complexidade do projeto.