DAL без web2py

Я использую 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()

Это не обновляет базу данных и выбор на заказах с этим идентификатором, показывает корректные данные. При некоторых обстоятельствах "db.rollback ()" после того, как фиксация, кажется, помогает.

Очень странный по меньшей мере. Вы видели это? Что еще более важно, Вы знаете решение?


ОБНОВЛЕНИЕ:
Исправление: рассматриваемый выбор сделан в рамках программы, не снаружи.

Иногда, при выполнении ряда обновлений, некоторые будут работать и будут доступны снаружи, и некоторые не будут доступны. Также некоторые запросы возвратят данные, которые это первоначально возвратило даже при том, что данные имеют изменения в DB с тех пор th4 исходный запрос.

Я испытываю желание вывести этот подход и переместиться в другой метод, какие-либо предложения?

6
задан T.Rob 18 December 2011 в 03:03
поделиться

1 ответ

Эта проблема была решена: MySQL работает на уровне изоляции Reewable Read (то есть после начала транзакции данные, отраженные в выборе выбора, не изменится до конца транзакции). Нужно было изменение уровня изоляции для чтения, и это решило проблему. Кстати, прочитанный, это уровень изоляции, на котором Oracle и MSSQL работают по умолчанию. Это может быть установлено в my.cnf . Детали по ссылке ниже:

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

3
ответ дан 17 December 2019 в 18:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: