根据另一个 table fastAPI 和 sqlalchemy 的 ID 从 table 获取数据

Fetching data from the table based on the Id of another table fastAPI and sqlalchemy

我想在有 2 个 table(表 1 和表 2)的地方进行数据库操作。表 1 中有一个“id”列,在 table2 中我有 4 列(id、服务器、端口、端点)。所以我想比较两个 table 的 id,如果匹配我想要服务器、端口和端点详细信息。我在 sqlalchemy 中使用 fastAPI。

模型文件是这样的

#Table1
class RD(Base):
    __tablename__ = "table1"
    id = Column(String, unique=True, index=True, nullable=False)
#Table2
class AD(Base):
    __tablename__ = "table2"
    id = Column(String, unique=True, index=True, nullable=False)
    server = Column(String(100), index=True, nullable=False)
    port = Column(String, index=True, nullable=False)
    endpoint = Column(String, index=True, nullable=False)

现在我想要比较 table 的 id,如果匹配我想打印来自 table 的服务器、端口和端点 2。 我也不想写一个原始的 sql 查询。我想写一个基于 ORM 的查询。

我的数据库连接文件

谢谢。

我尝试了你的代码并做了一些修改,因为有几行在 id 列定义和 table1 name("response")

中给我一个错误
class Table1(Base):
    __tablename__ = "table1"
    id = Column(String, primary_key=True, index=True)
    
class Table2(Base):
    __tablename__ = "table2"
    id = Column(String, primary_key=True, index=True)
    server = Column(String(100), index=True, nullable=False)
    port = Column(String, index=True, nullable=False)
    endpoint = Column(String, index=True, nullable=False)

# Insert few rows in tables
db.add(Table1(id=1))
db.add(Table1(id=2))
db.add(Table1(id=3))

db.add(Table2(id=1, server='localhost', port=8000, endpoint='/home'))
db.add(Table2(id=2, server='localhost', port=8000, endpoint='/cart'))
db.add(Table2(id=5, server='localhost', port=8000, endpoint='/item'))

db.commit()

现在当我执行这个查询时:

result = db.query(Table2).filter(Table1.id == Table2.id).all()
for row in result:
    print(row.server, row.port, row.endpoint)

我从 table2 中得到的行的 ID 等于 table 1

中的 ID
localhost 8000 /home
localhost 8000 /cart