gpt4 book ai didi

data-access-layer - 没有 web2py 的 DAL

转载 作者:行者123 更新时间:2023-12-04 15:37:56 25 4
gpt4 key购买 nike

我正在使用 web2py 来支持我的网站。我决定将 web2py DAL 用于在站点后面运行的长时间运行的程序。
该程序似乎没有更新其数据或数据库(有时)。

from gluon.sql import *
from gluon.sql import SQLDB

from locdb import *
# contains
# db = SQLDB("mysql://user/pw@localhost/mydb", pool_size=10)
# db.define_table('orders', Field('status', 'integer'), Field('item', 'string'),
# migrate='orders.table')
orderid = 20 # there is row with id == 20 in table orders
#when I do
db(db.orders.id==orderid).update(status=6703)
db.commit()

它不会更新数据库,并且对具有此 ID 的订单进行选择会显示正确的数据。在某些情况下,提交后的“db.rollback()”似乎有帮助。

至少可以说很奇怪。你见过这个吗?更重要的是你知道解决方案吗?


更新:
更正:
有问题的选择是在程序内完成的,而不是在程序外完成。

有时,在进行一系列更新时,有些可以工作并且可以在外面使用,有些则无法使用。即使自第 4 次原始查询以来数据库中的数据发生了变化,一些查询也会返回它最初返回的数据。

我很想放弃这种方法并转向另一种方法,有什么建议吗?

最佳答案

问题已经解决了:
mysql 运行在隔离级别 REPEATABLE READ(即一旦事务开始,select 输出中反射(reflect)的数据将不会更改,直到事务结束)。它需要将隔离级别更改为 READ COMMITED 并解决了问题。顺便说一下,R​​EAD COMMITED 是 Oracle 和 mssql 默认运行的隔离级别。
这可以在 中设置my.cnf .详情请见以下链接:

http://dev.mysql.com/doc/refman/5.1/en/set-transaction.html

关于data-access-layer - 没有 web2py 的 DAL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2132531/

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