programing

SqlAlchemy를 사용하여 id별로 데이터베이스를 쿼리하는 방법은 무엇입니까?

telebox 2023. 7. 21. 21:31
반응형

SqlAlchemy를 사용하여 id별로 데이터베이스를 쿼리하는 방법은 무엇입니까?

SQL 화학 데이터베이스를 기준으로 쿼리해야 합니다.id와 비슷한 것.

User.query.filter_by(username='peter')

이드를 위해서만.이거 어떻게 하는 거지?[Google 검색 및 SO는 도움이 되지 않았습니다.]

쿼리에는 테이블의 기본 키에 의한 쿼리를 지원하는 get 함수가 있으며, 이는id사실은.

예를 들어 ID가 23인 개체를 쿼리하려면 다음과 같이 하십시오.

User.query.get(23)

참고: 일부 다른 의견 및 답변에서 언급했듯이, 이는 단순히 "기본 키에서 쿼리 필터링 수행"의 약어가 아닙니다.SQL 화학 세션의 상태에 따라 이 코드를 실행하면 데이터베이스를 쿼리하고 새 인스턴스를 반환하거나 데이터베이스를 실제로 쿼리하지 않고 코드의 이전에 쿼리한 개체의 인스턴스를 반환할 수 있습니다.아직 읽지 않은 경우 SQL 화학 세션의 설명서를 읽어보고 그 영향을 이해하십시오.

ID가 = 1인 사용자를 다음과 같이 쿼리할 수 있습니다.

session.query(User).get(1)

get()때때로 당신의 예상과 다릅니다.거래가 완료된 경우:

>>> session.query(User).get(1)
[SQL]: BEGIN (implicit)
[SQL]: SELECT user.id AS user_id, user.name AS user_name, user.fullname AS user_fullname
FROM user
WHERE user.id = ?
[SQL]: (1,)
<User(u'ed', u'Ed Jones')>

만약 당신이 거래를 하고 있다면,get()데이터베이스를 쿼리하지 않고 메모리의 결과 개체를 제공합니다.

>>> session.query(User).get(1)
<User(u'ed', u'Ed Jones')>

다음을 사용하는 것이 좋습니다.

>>> session.query(User.name).filter(User.id == 1).first()
[SQL]: SELECT user.name AS user_name
FROM user
WHERE user.id = ?
 LIMIT ? OFFSET ?
[SQL]: (1, 1, 0)
(u'Edwardo',)

사용하는 경우tables reflection지정된 솔루션에 문제가 있을 수 있습니다. (이전 솔루션은 저에게 적합하지 않았습니다.)

사용하게 된 것은 다음과 같습니다.

session.query(object.__class__).get(id)

(object데이터베이스에서 반영하여 검색했습니다. 이것이 당신이 사용해야 하는 이유입니다..__class__)

이것이 도움이 되길 바랍니다.

먼저 설정해야 합니다.id기본 키로 사용합니다.
그러면 당신은 그것을 사용할 수 있습니다.query.get()개체를 쿼리하는 방법id이미 기본 키입니다.

그 이후로query.get()기본 키로 개체를 쿼리하는 메서드입니다.
플라스크-SQ에서 추론LA 화학 문서

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
db = SQLAlchemy()
db.init_app(app)

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)

def test():
    id = 1
    user = User.query.get(id)

SQLAlchemy 2.0 기준으로 다음을 사용할 수 있습니다.

with Session(engine) as session:
    user = session.get(User, 1)
    if user is not None:
        print(f'# user: {user.username}')
        print(user)

언급URL : https://stackoverflow.com/questions/6750017/how-to-query-database-by-id-using-sqlalchemy

반응형