Python session.query返回不在db-sqlalchemy中的对象

Python session.query返回不在db-sqlalchemy中的对象,python,sql,sqlalchemy,Python,Sql,Sqlalchemy,如果我在session.queryobject之前有session.addobject,但还没有session.commit,我仍然会将该对象取回。我的期望是,我不会使用session.query获取对象,因为它尚未添加到数据库中 如何验证对象是否已存储在数据库中?谢谢 from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy impor

如果我在session.queryobject之前有session.addobject,但还没有session.commit,我仍然会将该对象取回。我的期望是,我不会使用session.query获取对象,因为它尚未添加到数据库中

如何验证对象是否已存储在数据库中?谢谢

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import sessionmaker

engine = create_engine('sqlite:///:memory:', echo=True)

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String(100))

    def __repr__(self):
        return f"<User(name={self.name}>"

Base.metadata.create_all(engine)

user1 = User(name="Demo User")

Session = sessionmaker(bind=engine)
session = Session()

session.add(user1)
# session.commit()

user_from_db=session.query(User).filter(User.name=='Demo User').one()

print(user_from_db)
输出:

2020-02-19 15:13:10,718 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_12020-02-19 15:13:10,718 INFO sqlalchemy.engine.base.Engine ()
2020-02-19 15:13:10,718 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS VARCHAR(60)) AS anon_1
2020-02-19 15:13:10,718 INFO sqlalchemy.engine.base.Engine ()
2020-02-19 15:13:10,719 INFO sqlalchemy.engine.base.Engine PRAGMA main.table_info("users")
2020-02-19 15:13:10,719 INFO sqlalchemy.engine.base.Engine ()
2020-02-19 15:13:10,719 INFO sqlalchemy.engine.base.Engine PRAGMA temp.table_info("users")
2020-02-19 15:13:10,719 INFO sqlalchemy.engine.base.Engine ()
2020-02-19 15:13:10,719 INFO sqlalchemy.engine.base.Engine 
CREATE TABLE users (
        id INTEGER NOT NULL, 
        name VARCHAR(100), 
        PRIMARY KEY (id)
)


2020-02-19 15:13:10,719 INFO sqlalchemy.engine.base.Engine ()
2020-02-19 15:13:10,719 INFO sqlalchemy.engine.base.Engine COMMIT
2020-02-19 15:13:10,720 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2020-02-19 15:13:10,720 INFO sqlalchemy.engine.base.Engine INSERT INTO users (name) VALUES (?)
2020-02-19 15:13:10,721 INFO sqlalchemy.engine.base.Engine ('Demo User',)2020-02-19 15:13:10,721 INFO sqlalchemy.engine.base.Engine SELECT users.id AS users_id, users.name AS users_name 
FROM users 
WHERE users.name = ?
2020-02-19 15:13:10,721 INFO sqlalchemy.engine.base.Engine ('Demo User',)
<User(name=Demo User>

看到了吗:这是自动刷新,正如@Shubhamoli@Shubhamoli链接的答案中所指出的那样。谢谢。看这个:这是自动刷新,正如@Shubhamoli@Shubhamoli链接的答案所指出的那样。非常感谢。