app/django/db/backends/mysql/client.py
author Madhusudan C.S. <madhusudancs@gmail.com>
Tue, 11 Aug 2009 12:48:10 -0700
changeset 2757 7d0d0ce76bd9
parent 323 ff1a9aa48cfd
permissions -rw-r--r--
updateOrCreateFromFields is made to call updateOrCreateFromKeyName. updateOrCreateFromFields called self._model.get_or_insert which only creates new entities but doesn't update the properties if the entity already exists. So updateOrCreateFromFields is now made to call updateOrCreateFromKeyName which actually updates the entity properties if entity already exists. Reviewed by: Lennard de Rijk

from django.db.backends import BaseDatabaseClient
from django.conf import settings
import os

class DatabaseClient(BaseDatabaseClient):
    executable_name = 'mysql'

    def runshell(self):
        args = ['']
        db = settings.DATABASE_OPTIONS.get('db', settings.DATABASE_NAME)
        user = settings.DATABASE_OPTIONS.get('user', settings.DATABASE_USER)
        passwd = settings.DATABASE_OPTIONS.get('passwd', settings.DATABASE_PASSWORD)
        host = settings.DATABASE_OPTIONS.get('host', settings.DATABASE_HOST)
        port = settings.DATABASE_OPTIONS.get('port', settings.DATABASE_PORT)
        defaults_file = settings.DATABASE_OPTIONS.get('read_default_file')
        # Seems to be no good way to set sql_mode with CLI.
    
        if defaults_file:
            args += ["--defaults-file=%s" % defaults_file]
        if user:
            args += ["--user=%s" % user]
        if passwd:
            args += ["--password=%s" % passwd]
        if host:
            args += ["--host=%s" % host]
        if port:
            args += ["--port=%s" % port]
        if db:
            args += [db]

        os.execvp(self.executable_name, args)