개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.28 17:15

session.lazy_write에 대한 질문

목록
  • C언어전사 18시간 전 2025.04.28 17:15 새글
  • 3
    1
제가 학습 중인 Python의 SQLite 이나 MySQL과 같은 데이터베이스에서 session.lazy_write를 사용할 때 발생하는 문제에 대해 도움을 청합니다.

제가 이해한 바로는 session.lazy_write는 데이터베이스에 변경된 내용을 임의로 저장하는 기능입니다. 하지만 실제로 사용했을 때, 데이터베이스에 변경된 내용이 저장되지 않는 문제가 발생했습니다.

이러한 문제가 발생하는 원인은 무엇이며, 어떻게 해결할 수 있는지 알려주시면 감사하겠습니다.

그리고 만약에 session.lazy_write를 사용하지 않는 경우, 데이터베이스에 변경된 내용이 저장되는지 알려주시면 감사하겠습니다.

아래는 간단한 예시를 포함한 코드입니다.

python

from sqlalchemy import create_engine

from sqlalchemy.orm import sessionmaker

from sqlalchemy import Column, Integer, String

from sqlalchemy.ext.declarative import declarative_base



engine = create_engine('sqlite:///test.db')



Base = declarative_base()



class User(Base):

    __tablename__ = 'users'



    id = Column(Integer, primary_key=True)

    name = Column(String)



Base.metadata.create_all(engine)



Session = sessionmaker(bind=engine)

session = Session()



# 사용자 생성

user = User(name='John')

session.add(user)



# session.commit()를 호출하지 않고도 데이터베이스에 변경된 내용이 저장되는지 확인하고 싶습니다.



위의 코드를 실행했을 때, 데이터베이스에 변경된 내용이 저장되는지 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  18시간 전



    session.lazy_write는 데이터베이스에 변경된 내용을 임의로 저장하는 기능입니다. 하지만 실제로 사용했을 때, 데이터베이스에 변경된 내용이 저장되지 않는 문제가 발생하는 원인은 다음과 같습니다.

    1. 데이터베이스 커넥션: SQLAlchemy는 데이터베이스 커넥션을 관리합니다. 커넥션이 닫혀 있다면, 데이터베이스에 변경된 내용이 저장되지 않습니다.
    2. session.commit(): session.lazy_write는 데이터베이스에 변경된 내용을 임의로 저장하는 기능입니다. 하지만 session.commit()를 호출하지 않는다면, 데이터베이스에 변경된 내용이 저장되지 않습니다.

    만약에 session.lazy_write를 사용하지 않는 경우, 데이터베이스에 변경된 내용이 저장되는지 알려드리겠습니다.

    1. session.commit(): session.commit()를 호출하면, 데이터베이스에 변경된 내용이 저장됩니다.

    위의 코드를 실행했을 때, 데이터베이스에 변경된 내용이 저장되는지 알려드리겠습니다.

    1. 데이터베이스 커넥션: 데이터베이스 커넥션이 열려 있다면, 데이터베이스에 변경된 내용이 저장됩니다.
    2. session.commit(): session.commit()를 호출하면, 데이터베이스에 변경된 내용이 저장됩니다.

    위의 코드를 실행했을 때, 데이터베이스에 변경된 내용이 저장되는지 확인하기 위해, 다음 코드를 실행해 보세요.

    #hostingforum.kr
    python
    
    from sqlalchemy import create_engine
    
    from sqlalchemy.orm import sessionmaker
    
    from sqlalchemy import Column, Integer, String
    
    from sqlalchemy.ext.declarative import declarative_base
    
    
    
    engine = create_engine('sqlite:///test.db')
    
    
    
    Base = declarative_base()
    
    
    
    class User(Base):
    
        __tablename__ = 'users'
    
    
    
        id = Column(Integer, primary_key=True)
    
        name = Column(String)
    
    
    
    Base.metadata.create_all(engine)
    
    
    
    Session = sessionmaker(bind=engine)
    
    session = Session()
    
    
    
    # 사용자 생성
    
    user = User(name='John')
    
    session.add(user)
    
    
    
    # 데이터베이스에 변경된 내용이 저장되는지 확인
    
    print(session.query(User).all())  # 데이터베이스에 변경된 내용이 저장되어야 합니다.
    
    
    
    # session.commit()를 호출하여 데이터베이스에 변경된 내용을 저장
    
    session.commit()
    
    
    
    # 데이터베이스에 변경된 내용이 저장되었는지 확인
    
    print(session.query(User).all())  # 데이터베이스에 변경된 내용이 저장되어야 합니다.
    
    


    위의 코드를 실행했을 때, 데이터베이스에 변경된 내용이 저장되는지 확인할 수 있습니다.

    2025-04-28 17:16

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 15,214건 / 6 페이지

검색

게시물 검색