如何使用 SQLalchemy 提取数据

How do I pull data using SQLalchemy

所以我在 python 中使用 sqlalchemy 作为我的 orm,我正在寻找如何提取特定数据的方法。 这是我搭建的ORM模型。

class ServerList(Base):
    # Table name
    __tablename__ = "ServerList"
    metadata_obj

    rID = Column(Integer, primary_key=True, autoincrement=True)
    ServerID = Column(BigInteger)
    ServerName = Column(String(200))
    MemberCount = Column(Integer)
    ChannelCount = Column(Integer)
    Prefix = Column(String(200), default='H!')
    WelcomeEnabled = Column(BOOLEAN, default=False)
    LeaveEnabled = Column(BOOLEAN, default=False)
    AutoModEnabled = Column(BOOLEAN, default=True)
    MusicEnabled = Column(BOOLEAN, default=True)
    LastUpdate = Column(DATE)

现在我正在尝试对其进行设置,以便该机器人所在的每个服务器都可以拥有自己的前缀,我需要如何从数据库中提取该信息,但似乎找不到适合我的情况。

这段代码是从数据库中获取前缀,但没有按预期工作。

async def get_prefix(bot: commands.Bot, message: discord.Message):
    with Session(engine) as session:
        guild = session.query(ServerList).filter_by(ServerID=message.guild.id).first()
        if not guild:
            return PREFIX
        else:
            prefix = session.query(ServerList).filter_by(ServerID=message.guild.id).fetch(Prefix)
            return prefix

欢迎提出任何建议。谢谢你的帮助。

所以我自己解决了这个问题,但我想我会 post 我找到的解决方案。

所以我首先打印了查询:

session.query(ServerList).filter_by(ServerID=ctx.guild.id).first()

返回一个对象

所以通过将查询命名为变量,我可以调用 var.Prefix

这是修复后的代码。

async def get_prefix(bot: commands.Bot, message: discord.Message):
    with Session(engine) as session:
        guild = session.query(ServerList).filter_by(ServerID=message.guild.id).first()
        if not guild:
            return PREFIX
        else:
            GuildData  = session.query(ServerList).filter_by(ServerID=message.guild.id).first()
            return GuildData.Prefix