python - 更快地刷新 sqlalchemy 表模型中的数据

标签 python sqlalchemy

由于 Django 和 SQLAlchemy 处理 JSON 数据的方式很复杂,我必须创建一个使用它们的模型以及标准 SQLAlchemy 的系统。

我遇到的问题是,当我通过 table.update() 方法更新表中的信息时,在我的 SQLAlchemy 表模型接收到更改之前会有相当大的延迟。

有没有办法强制模型更新?

我的代码是这样的:

# Database Connection
engine = create_engine('mysql+pymysql://'+dbusername+':'+dbuserpass+dbserver+dbname, 
pool_recycle=3600, echo=False)
con = scoped_session(sessionmaker(autocommit=True,autoflush=False,bind=engine))
Session = sessionmaker(bind=engine)
sess = Session()
meta = MetaData(engine)
insp = inspect(engine)
Base = declarative_base()
con.close()
engine.dispose()

# sqlalchemy table model
class ContactsTable(Base):
    __tablename__ = 'contacts_tbl'
    db_id = Column(Integer, primary_key=True)
    per_contact_id = Column(JSON)
    createdDateTime = Column(JSON)
    lastModifiedDateTime = Column(JSON)
    distlists = Column(JSON)

# Theres a lot of code missing here you can see the basics of what I'm doing, adding data and then reading

def add_to_dist(contact,dist,tbl=contacts_tbl):
    con.execute(tbl.update().values(distributionLists=dists).where(tbl.c.per_contact_id==contact))

def get_dist_members(name):
    data = sess.query(ContactsTable).filter(ContactsTable.distributionLists.contains(name)).all()

一切正常。只是查询数据已经过时,并且似乎需要最多 10 分钟才能刷新。这很烦人,因为它正在通过显示数据的网页运行。它确实需要立即反射(reflect)变化。

如果事实上我做的整件事都是错误的,那么请随意教训我!

最佳答案

通过向引擎添加isolation_level="READ UNCOMMITTED"解决了这个问题:

engine = create_engine('mysql+pymysql://'+dbusername+':'+dbuserpass+dbserver+dbname, pool_recycle=3600, echo=False, isolation_level="READ UNCOMMITTED")

感谢 Ilja 为我指明了正确的方向。

关于python - 更快地刷新 sqlalchemy 表模型中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58871386/

相关文章:

python - 将 SqlAlchemy orm 结果转换为 dict

python - Jupyter Notebook 在 Pycharm 中无法完全运行

python - 在 Python pandas 中,如何存储 value_counts 的列名称?

python - 有没有办法在不启动服务器(可能作为库)的情况下使用 postgresql?

Python-PPTX 面积图透明度

python - 用于文章的超长文本的 SQLalchemy 类型

python - Django FBV 的 "render_to_response"等同于基于类的 View ?

python - 将查询结果附加到 PostgreSQL 中的同一结果行 - Redshift

python - 使用 Pandas/SQLAlchemy 导入日期时间

python - sqlalchemy : Dynamically create table from Scrapy item