gpt4 book ai didi

python - sqlalchemy 总是返回相同的数据

转载 作者:行者123 更新时间:2023-11-30 00:14:08 26 4
gpt4 key购买 nike

我正在使用 SQLalchemy 核心(而不是 session )。我有一个如下所示的数据库类:

class DB(object):

db_string = "mysql://%s:%s@%s/%s" % (db_username, db_password, db_host, db_name)
db_engine = create_engine(db_string, encoding="UTF-8", echo=False)
db_conn = db_engine.connect()
db_meta = MetaData()

table1 = Table("table1", db_meta, autoload=True, autoload_with=db_engine)

def get_data(self, time_limit):
stmt = select([self.table1]).where(self.table1.c.last_check < time_limit)
return self.db_conn.execute(alexa_domains)

我在加载时实例化此类并传递实例引用。现在,主程序基本上在循环中轮询数据库,以查看 time_limit 是否足够小以执行更多代码。

while 1:
result = db_instance.get_data()
check_if_result_has_data_smaller_than_time_limit(result) # THIS always returns False
time.sleep(1)

问题是,如果我手动更改数据库中的数据(last_check 字段),或者如果另一个客户端进行更改,则此 db_instance 显然永远不会看到新数据,并且结果的大小将始终为 0。如何我可以防止这种行为并确保在下一次迭代中它将看到应返回的新行吗?

最佳答案

正确的方法是在选择中强制自动提交,而不是强制新连接。

 def get_data(self, time_limit):
stmt = select([self.table1]).execution_options(autocommit=True).where(self.table1.c.last_check < time_limit)
return connection.execute(alexa_domains)

看吧。 http://docs.sqlalchemy.org/en/latest/core/connections.html#understanding-autocommit

关于python - sqlalchemy 总是返回相同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23797262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com