Articles of Transacciones

Pony ORM informa que el registro “se actualizó fuera de la transacción actual” mientras que no hay otra transacción

El código es bastante simple, como sigue: from pony.orm import Required, Set, Optional, PrimaryKey from pony.orm import Database, db_session import time db = Database(‘mysql’, host=”localhost”, port=3306, user=”root”, passwd=”123456″, db=”learn_pony”) class TryUpdate(db.Entity): _table_ = “try_update_record” t = Required(int, default=0) db.generate_mapping(create_tables=True) @db_session def insert_record(): new_t = TryUpdate() @db_session def update(): t = TryUpdate.get(id=1) print tt tt = […]

Cómo `SET CONSTRAINTS… DEFERRED` en SQLALchemy Core

Estoy usando SQLAlchemy y PostgreSQL. Postgres admite hacer restricciones diferidas, lo que nos permite posponer la verificación de las restricciones en una tabla hasta el final de la transacción. Por ejemplo, en SQLAlchemy, podría definir una tabla como esta: t_group_categories = Table(‘group_categories’, metadata, Column(‘id’, Integer, primary_key=True), Column(‘group_id’, Integer, ForeignKey(‘groups.id’, deferrable=True)) ) SQLAlchemy generaría una CREATE […]

Transacciones Django ATOMIC_REQUESTS

Realmente no estoy claro cómo se configuran las solicitudes atómicas en Django. Cuando ATOMIC_REQUESTS se establece en Verdadero en la configuración de la base de datos, ¿significa que todas las vistas ahora se ejecutan en una transacción? ¿Qué sucede si solo deseo que solo se ejecuten ciertas vistas en una transacción? ¿Entonces necesito definir explícitamente […]

Django transaction.commit_on_success no revierte la transacción

Estoy tratando de usar transacciones Django en MySQL con el decorador commit_on_success . De acuerdo con la documentación, “si la función genera una excepción, Django revertirá la transacción”. Sin embargo, esto no parece funcionar para mí: >>> @transaction.commit_on_success … def fails(): … Site.objects.create(name=”New Site”, ip_address=”127.0.0.1″) … raise ValueError(“oh noes!”) … >>> Site.objects.count() 2 >>> fails() […]

¿Se incluyen también las señales django dentro del decorador transaction.atomic?

Tengo un archivo de modelo que utiliza una señal post_save para crear una fila vinculada en otra tabla. De manera típica, puedo crear una página desde una de mis vistas que está decorada con @ transaction.atomic. Me gustaría saber si este decorador pondrá la creación del objeto Page y del objeto SharedPage en la misma […]

Python / SQLite3: no se puede confirmar, no hay ninguna transacción activa

Estoy tratando de codificar un indexador de libros usando Python (tradicional, 2.7) y SQLite (3). El código se reduce a esta secuencia de sentencias de SQL: ‘select count(*) from tag_dict’ () /* [(30,)] */ ‘select count(*) from file_meta’ () /* [(63613,)] */ ‘begin transaction’ () ‘select id from archive where name=?’ (‘158326-158457.zip’,) /* [(20,)] */ […]

¿Cerrar una sesión de SQLAlchemy ORM revertir los cambios no confirmados?

Por ejemplo, ¿hay alguna diferencia entre los dos siguientes? session = Session() # Session is a session maker try: # do some work session.commit() except: session.rollback() finally: session.close() y session = Session() try: # do some work session.commit() finally: session.close() Esto último es lo que solía hacer, porque asumí que cerrar la sesión antes de […]

Django: ¿cómo envolver una operación de actualización / inserción masiva en una transacción?

Este es mi caso de uso: Tengo varias tareas de apio que se ejecutan en paralelo Cada tarea podría crear o actualizar a granel muchos objetos. Para esto estoy usando django-bulk Así que básicamente estoy usando una función muy conveniente insert_or_update_many : primero realiza un Select Si encuentra objetos los actualiza. De lo contrario los […]

Nivel de aislamiento por transacción en Django ORM

¿Es posible establecer el nivel de aislamiento para una transacción personalizada (pero no con un sql sin procesar)? Por ejemplo, algo como: with transaction.commit_on_success(isolation=’SERIALIZABLE’): bla

sqlite3 guardando cambios sin el comando commit en python

Leí en algún lugar para guardar datos en una base de datos sqlite3 en Python. Debes llamar a la función commit () en el objeto de conexión. Nunca hago esto, pero mi base de datos aún tiene los datos guardados en él … ¿por qué?