欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python 聯表查詢

江奕云2年前9瀏覽0評論

Python是一種強大的編程語言,它可以通過SQLAlchemy這個ORM工具來操作數據庫。在SQLAlchemy中,聯表查詢是一件非常常見的事情,下面我們來看一下具體的實現方法。

from sqlalchemy import create_engine, Column
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.sql import text
from datetime import datetime
# 創建引擎
engine = create_engine('postgresql://username:password@localhost:5432/dbname')
# 創建會話
Session = sessionmaker(bind=engine)
session = Session()
# 定義基礎類
Base = declarative_base()
# 定義User類
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
email = Column(String)
password = Column(String)
posts = relationship('Post', back_populates='author')
# 定義Post類
class Post(Base):
__tablename__ = 'posts'
id = Column(Integer, primary_key=True)
title = Column(String)
content = Column(String)
created_at = Column(DateTime, default=datetime.utcnow)
author_id = Column(Integer, ForeignKey('users.id'))
author = relationship('User', back_populates='posts')
# 聯表查詢
stmt = text("SELECT * FROM users JOIN posts ON users.id = posts.author_id WHERE users.id = :user_id")
result = session.execute(stmt, {'user_id': 1})
for row in result:
print(row)

以上代碼中,我們首先通過create_engine創建了一個PostgreSQL的引擎,然后通過sessionmaker創建了一個會話對象。接著,我們定義了兩個類User和Post,它們之間建立了一對多的關系。最后,我們使用純SQL的方式進行聯表查詢,并將結果打印出來。

在實際項目中,我們建議使用SQLAlchemy的Query對象來完成聯表查詢。Query對象可以方便地進行鏈式操作,并且生成的SQL語句更加易讀。