0

禁止とアカウントのデータベース関係があります。1 つのアカウントに複数の禁止を設定できます。私のクラスは次のようになります。

class Account(Base):
    __tablename__ = "accounts"

    _accountId = Column(Integer, name="accountId", primary_key=True)
    _username = Column(String, name="username")
    _password = Column(String, name="password")
    _salt = Column(String, name="salt")
    _lastLoggedIn = Column(String, name="lastLoggedIn")
    _banned = relationship("Banned")

class Banned(Base):
    __tablename__ = 'bannedAccounts'
    _id = Column(Integer, name="Id", primary_key=True)
    _accountId = Column(Integer, ForeignKey('accounts.accountId'), name="accountId")
    _reason = Column(String, name="Reason")
    _expires = Column(String, name="Expires")

ユーザー名を持つすべてのアカウントを選択し、それを禁止されたテーブルに結合して、禁止されているかどうかを確認するクエリを実行しようとしています。私のコードは現在次のようになっています。

engine = create_engine(self.connectionString)
Session = sessionmaker(bind=engine)
session = Session()

query = session.query(Account, Banned)
query = query.filter(Account._username == self.username).filter(Account._accountId == Banned._accountId).all()

self.username私の問題は、いくつかの禁止がある限り、一致するアカウントとそれに関連する禁止のタプルを返すことです。ただし、アカウント オブジェクトが返されるのではなく、禁止されていない場合は、私がNone返されます。とにかくこれを修正する方法はありますか?

SQLで到達したいエンドポイントを編集するのはこれ

SELECT *
FROM accounts
LEFT JOIN bannedaccounts
ON accounts.accountId = bannedaccounts.AccountID
WHERE username= self.username
4

1 に答える 1