Exemple #1
0
    def run_select_for_update(self, status, nowait=False):
        """
        Utility method that runs a SELECT FOR UPDATE against all
        Person instances. After the select_for_update, it attempts
        to update the name of the only record, save, and commit.

        This function expects to run in a separate thread.
        """
        status.append('started')
        try:
            # We need to enter transaction management again, as this is done on
            # per-thread basis
            transaction.enter_transaction_management(True)
            transaction.managed(True)
            people = list(
                Person.objects.all().select_for_update(nowait=nowait)
            )
            people[0].name = 'Fred'
            people[0].save()
            transaction.commit()
        except DatabaseError as e:
            status.append(e)
        finally:
            # This method is run in a separate thread. It uses its own
            # database connection. Close it without waiting for the GC.
            connection.close()
Exemple #2
0
    def test_signal(self):
        data = {}

        def receiver(sender, connection, **kwargs):
            data["connection"] = connection

        connection_created.connect(receiver)
        connection.close()
        cursor = connection.cursor()
        self.assertTrue(data["connection"].connection is connection.connection)

        connection_created.disconnect(receiver)
        data.clear()
        cursor = connection.cursor()
        self.assertTrue(data == {})
Exemple #3
0
 def raw(status):
     try:
         list(
             Person.objects.raw(
                 'SELECT * FROM %s %s' % (
                     Person._meta.db_table,
                     connection.ops.for_update_sql(nowait=True)
                 )
             )
         )
     except DatabaseError as e:
         status.append(e)
     finally:
         # This method is run in a separate thread. It uses its own
         # database connection. Close it without waiting for the GC.
         connection.close()
Exemple #4
0
 def test_server_version_connections(self):
     connection.close()
     connection.mysql_version
     self.assertTrue(connection.connection is None)