Python/SQLAlchemy
Torolàlana SQLAlchemy: Endri-javatra Fototra sy Mandroso
[hanova]SQLAlchemy dia ORM (Object-Relational Mapping) mahery vaika ho an'ny Python, izay mamela anao hiasa amin'ny tahiry tsy mampiasa SQL mivantana. Ity cheatsheet ity dia manome topi-maso fohy momba ny endri-javatra fototra sy mandroso amin'ny SQLAlchemy.
Fomba fototra amin'ny SQLAlchemy
[hanova]- Fampidirana sy Fametrahana ny SQLAlchemy :
Mba hampiasana SQLAlchemy dia mila mametraka azy aloha ianao:
pip install sqlalchemy
- Famoronana Firafitry ny Database :
Miaraka amin'ny SQLAlchemy, afaka mamorona firafitry ny tahiry amin'ny alalan'ny modely ianao.
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
engine = create_engine('sqlite:///database.db')
Base.metadata.create_all(engine)
- Famoronana Fivoriana (Session) :
Ny fivoriana dia ampiasaina hitantanana ny fifandraisana amin'ny tahiry sy ny fanovana angon-drakitra.
Session = sessionmaker(bind=engine)
session = Session()
- Fametrahana Angona ao amin'ny Tahiry :
Afaka mametraka angona vaovao ao amin'ny tahiry ianao amin'ny alalan'ny famoronana zavatra avy amin'ny modely ary manampy azy amin'ny fivoriana.
new_user = User(name='Rakoto', age=30)
session.add(new_user)
session.commit()
- Fikarohana Angona :
SQLAlchemy dia manohana ny fikarohana angona amin'ny alalan'ny fifantina (queries).
users = session.query(User).all()
for user in users:
print(user.name, user.age)
- Fanavaozana sy Famafana Angona :
Azonao atao ny manavao na mamafa angona avy amin'ny tahiry.
- Fanavaozana
user = session.query(User).filter_by(name='Rakoto').first()
user.age = 31
session.commit()
- Famafana
session.delete(user)
session.commit()
Endri-javatra Mandroso amin'ny SQLAlchemy
[hanova]- Fifandraisana (Relationships) :
SQLAlchemy dia manohana ny fifandraisana eo amin'ny modely, toy ny one-to-many sy many-to-many.
- One-to-Many
from sqlalchemy.orm import relationship
class Address(Base):
__tablename__ = 'addresses'
id = Column(Integer, primary_key=True)
email = Column(String)
user_id = Column(Integer, ForeignKey('users.id'))
user = relationship("User", back_populates="addresses")
User.addresses = relationship("Address", order_by=Address.id, back_populates="user")
- Many-to-Many
association_table = Table('association', Base.metadata,
Column('user_id', Integer, ForeignKey('users.id')),
Column('group_id', Integer, ForeignKey('groups.id'))
)
class Group(Base):
__tablename__ = 'groups'
id = Column(Integer, primary_key=True)
name = Column(String)
User.groups = relationship("Group", secondary=association_table, back_populates="users")
Group.users = relationship("User", secondary=association_table, back_populates="groups")
- Lazy Loading vs. Eager Loading :
SQLAlchemy dia manohana fomba roa hanalana angona mifandray: lazy loading sy eager loading.
- Lazy Loading
user = session.query(User).first()
print(user.addresses) # Ny angona addresses dia alaina rehefa ilaina
- Eager Loading
user = session.query(User).options(joinedload(User.addresses)).first()
print(user.addresses) # Ny angona addresses dia alaina miaraka amin'ny angona user
- Fampidirana Query ho an'ny tahiry lehibe (SQL Expressions) :
Azonao atao ny mampiasa query SQL mivantana amin'ny alalan'ny fampiasana SQL expressions amin'ny SQLAlchemy.
from sqlalchemy import text
result = session.query(User).from_statement(text("SELECT * FROM users WHERE age > :age")).params(age=25).all()
for user in result:
print(user.name, user.age)
- Mifandray amin'ny tahiry maro :
SQLAlchemy dia mamela ny fampiasana tahiry maromaro amin'ny alalan'ny fifandraisana sy motera maro.
engine1 = create_engine('sqlite:///database1.db')
engine2 = create_engine('sqlite:///database2.db')
Session1 = sessionmaker(bind=engine1)
Session2 = sessionmaker(bind=engine2)
session1 = Session1()
session2 = Session2()
Fehiny
[hanova]SQLAlchemy dia fitaovana mahery vaika sy mora ampiasaina ho an'ny fitantanana tahiry amin'ny Python. Amin'ny alalan'ny fahalalana ireo endri-javatra fototra sy mandroso ireo, dia afaka mamorona rindrambaiko matotra sy manintona ianao amin'ny alalan'ny SQLAlchemy, ka manamora ny fitantanana angona sy ny fifandraisana amin'ny tahiry.