根据另一个 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
我想在有 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
中的 IDlocalhost 8000 /home
localhost 8000 /cart