Articles of Transacciones

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é?

Actualización de transaction.commit_manually () a Django> 1.6

He heredado algo de código para una aplicación que fue escrita para Django 1.4. Necesitamos actualizar el código base para que funcione con Django 1.7, y eventualmente 1.8 como la próxima versión de Soporte a Largo Plazo. En algunos lugares usa el estilo antiguo @transaction.commit_manually y with transaction.commit_manually: No sé lo suficiente acerca de las […]

¿Ndb.toplevel rompe transacciones?

El siguiente código funciona como se esperaba y no activa la aserción: @ndb.transactional @ndb.tasklet def Foo(): assert ndb.in_transaction() El siguiente código se rompe, desencadenando la aserción: @ndb.transactional @ndb.toplevel def Foo(): assert ndb.in_transaction() Intenté reemplazar el decorador con una llamada ndb.transaction o una llamada ndb.transaction_async, pero ninguna funcionó. ¿Hay un error con ndb.toplevel y transacciones?

Transacciones y sqlalchemy

Estoy tratando de averiguar cómo insertar muchos registros (en el orden de 100k) en un db usando sqlalchemy en python3. Todo apunta a usar transacciones, sin embargo, estoy un poco confundido en cuanto a cómo se hace eso. Algunas páginas indican que obtienes una transacción de connection.begin (), otras partes dicen que es session.begin () […]

¿La tarea Django con subprocesos no maneja automáticamente las transacciones o las conexiones de base de datos?

Tengo a Django configurado para ejecutar algunas tareas recurrentes en sus propios subprocesos, y me di cuenta de que siempre estaban dejando procesos de conexión de base de datos sin terminar (pgsql “Idle In Transaction”). Revisé los registros de Postgres y descubrí que las transacciones no se estaban completando (sin ROLLBACK). Intenté usar los distintos […]

En Python, usando pyodbc, ¿cómo realiza transacciones?

Tengo un nombre de usuario que debo cambiar en numerosas tablas (hasta ~ 25). (Sí, lo sé). Una transacción atómica parece ser el camino a seguir para este tipo de cosas. Sin embargo, no sé cómo hacer esto con pyodbc. He visto varios tutoriales sobre transacciones atómicas antes, pero nunca los he usado. La configuración: […]

Django – Rollback guardado con transacción atómica

Estoy tratando de crear una vista donde guardo un objeto pero me gustaría deshacer ese guardado si se produce alguna excepción. Esto es lo que intenté: class MyView(View): @transation.atomic def post(self, request, *args, **kwargs): try: some_object = SomeModel(…) some_object.save() if something: raise exception.NotAcceptable() # When the workflow comes into this condition, I think the previous […]

sqlalchemy, postgresql y la relación se trabaron en “inactivo en transacción”

Tengo un problema relacionado con sqlalchemy y postgresql. class Profile(Base): … roles = relationship(‘Role’, secondary=role_profiles, backref=’profiles’, lazy=’dynamic’) Cuando se ejecuta ( current_user es una instancia de la clase Profile ): roles = current_user.roles.filter().all() Al usar sqlalchemy, me quedo idle in transaction para todas las selecciones para leer el perfil en postgresql. Editar: De hacerme eco […]

App Engine, transacciones e idempotency

Por favor ayúdame a encontrar mi malentendido. Estoy escribiendo un juego de rol en App Engine. Ciertas acciones que el jugador toma consumen cierta estadística. Si la estadística llega a cero, el jugador no puede realizar más acciones. Sin embargo, empecé a preocuparme por engañar a los jugadores. ¿Qué sucede si un jugador envía dos […]

Incremento atómico de un contador en django.

Estoy tratando de incrementar atómicamente un contador simple en Django. Mi código se ve así: from models import Counter from django.db import transaction @transaction.commit_on_success def increment_counter(name): counter = Counter.objects.get_or_create(name = name)[0] counter.count += 1 counter.save() Si entiendo a Django correctamente, esto debería incluir la función en una transacción y hacer que el incremento sea atómico. […]