Django'yu MySQL kullanacak şekilde ayarlama


172

PHP'den biraz uzaklaşmak ve Python öğrenmek istiyorum. Python ile web geliştirme yapabilmek için şablonlama ve diğer şeylere yardımcı olacak bir çerçeveye ihtiyacım olacak.

Tüm web geliştirme şeylerini test etmek için kullandığım üretim dışı bir sunucum var. Bu ortak MySQL-sunucu paketi yerine MariaDB çalıştıran bir Debian 7.1 LAMP yığınıdır.

Dün Django'yu kurdum ve firstweb adlı ilk projemi yarattım . Henüz hiçbir ayarı değiştirmedim.

İşte ilk büyük karışıklığım. Öğreticide Django'yu yükleyen adamı takip ettim, ilk projesini başlattı, Apache'yi yeniden başlattı ve Django daha sonra çalıştı. Tarayıcısına gitti ve sorunsuz bir şekilde Django varsayılan sayfasına gitti.

Ancak ben, benim ilk web klasörüne cd ve çalıştırmak zorunda

python manage.py runserver myip:port

Ve çalışıyor. Sorun değil. Ama bunun böyle çalışması gerekip gerekmediğini ve bunun sorunlara yol açıp açmadığını merak ediyorum?

Benim ikinci soru bu benim MySQL veritabanı kullanır böylece kurmak istiyorum olmasıdır. / Firstweb / firstweb altında settings.py'ye giriyorum ve MOTOR ve ADI görüyorum ama buraya ne koyacağımdan emin değilim.

Ve sonra KULLANICI, ŞİFRE ve HOST alanlarında bu benim veritabanım ve kimlik bilgilerim mi? Localhost kullanıyorsam HOST alanına localhost koyabilir miyim ?


Not: 01/2016 od olarak python 3.5.x için MySQL sürücüsü yoktur. Bkz. Stackoverflow.com/questions/34456770/… Bu yüzden yalnızca Python 3.4'e kadar kullanın. Yine de Django 1.9'u kullanabilirsiniz (01/2016 itibariyle en son kararlı sürüm).
Tomas Tintera

Yanıtlar:


317

MySQL desteği eklemek kolaydır. Senin içinde DATABASESsözlüğe, böyle bir girdi sahip olacaktır:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'DB_NAME',
        'USER': 'DB_USER',
        'PASSWORD': 'DB_PASSWORD',
        'HOST': 'localhost',   # Or an IP Address that your DB is hosted on
        'PORT': '3306',
    }
}

Ayrıca , Django 1.7'den itibaren MySQL seçenek dosyalarını kullanma seçeneğiniz de vardır . Dizinizi şu şekilde ayarlayarak DATABASESbunu yapabilirsiniz:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/path/to/my.cnf',
        },
    }
}

Ayrıca /path/to/my.cnf, yukarıdaki benzer ayarlarla dosyayı oluşturmanız gerekir

[client]
database = DB_NAME
host = localhost
user = DB_USER
password = DB_PASSWORD
default-character-set = utf8

Django 1.7'de bu yeni bağlantı yöntemiyle, sipariş bağlantılarının kurulduğunu bilmek önemlidir:

1. OPTIONS.
2. NAME, USER, PASSWORD, HOST, PORT
3. MySQL option files.

Başka bir deyişle, veritabanının adını OPTIONS olarak ayarlarsanız, bu, MySQL seçenek dosyasındaki her şeyi geçersiz kılacak olan NAME yerine öncelik verir.


Uygulamanızı yerel makinenizde test ediyorsanız,

python manage.py runserver

ip:portArgümanın eklenmesi, kendiniz dışındaki makinelerin geliştirme uygulamanıza erişmesine izin verir. Başvurunuzu dağıtmak için hazır olduğunda, ben bölüm bir göz alarak tavsiye dağıtma Django üzerinde djangobook

Mysql varsayılan karakter kümesi genellikle utf-8 değildir, bu nedenle bu sql kullanarak veritabanınızı oluşturduğunuzdan emin olun:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin

Eğer kullanıyorsanız Oracle'ın MySQL konektörü senin ENGINEsatır, aşağıdaki gibi görünmelidir:

'ENGINE': 'mysql.connector.django',

Öncelikle işletim sisteminize mysql yüklemeniz gerekeceğini unutmayın.

brew install mysql (MacOS)

Ayrıca, mysql istemci paketi python 3 için değişti ( MySQL-Clientsadece python 2 için çalışır)

pip3 install mysqlclient

26

İlk önce python bağımlılıklarını yüklemek için lütfen aşağıdaki komutları çalıştırın, aksi takdirde python runserver komutu hata verecektir.

sudo apt-get install libmysqlclient-dev
sudo pip install MySQL-python

Ardından settings.py dosyasını #Andy tarafından tanımlandığı şekilde ve son yürütmede yapılandırın:

python manage.py runserver

İyi eğlenceler..!!


18

Python3.x kullanıyorsanız aşağıdaki komutunu çalıştırın

pip install mysqlclient

Ardından setting.py dosyasını değiştirin

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'DB',
     'USER': 'username',
    'PASSWORD': 'passwd',
  }
  }

1
Python 3.6 ile virtualenv kullanıyorum. Bu hayatımı kurtarıyor. Teşekkür ederim. Ayrıca, önce
Fred

15

Yukarıda belirtildiği gibi, xampp'i önce https://www.apachefriends.org/download.html adresinden kolayca yükleyebilirsiniz. Ardından talimatları aşağıdaki gibi uygulayın:

  1. Http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/ adresinden xampp'i yükleyin ve çalıştırın , ardından GUI'den Apache Web Sunucusu ve MySQL Veritabanını başlatın.
  2. Web sunucunuzu istediğiniz gibi yapılandırabilirsiniz, ancak varsayılan olarak web sunucusu adresinde http://localhost:80ve veritabanında port 3306ve PhpMyadmin adresindehttp://localhost/phpmyadmin/
  3. Buradan veritabanlarınızı görebilir ve çok kullanıcı dostu GUI kullanarak bunlara erişebilirsiniz.
  4. Django projenizde kullanmak istediğiniz herhangi bir veritabanı oluşturun.
  5. Senin düzenleyin settings.pydosyayı gibi:

    DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DB_NAME',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': '',
    }}
  6. Virtualenv'e aşağıdaki paketleri yükleyin (virtualenv'de django kullanıyorsanız, daha çok tercih edilir):

    sudo apt-get install libmysqlclient-dev

    pip kurulum MySQL-python

  7. Bu kadar!! Django'yu MySQL ile çok kolay bir şekilde yapılandırdınız.

  8. Şimdi Django projenizi çalıştırın:

    python manage.py taşıma

    python manage.py runserver


7

Aslında, farklı ortamlar, python sürümleri, vb ile ilgili birçok sorun var. Ayrıca kurulumun 'kaba kuvvet' için ben tüm bunları çalıştırmak istiyorsunuz, python dev dosyaları yüklemeniz gerekebilir:

sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip install MySQL-python
pip install pymysql
pip install mysqlclient

Kabul edilen cevapla devam etmelisiniz. Ve bu sizin için önemliyse gereksiz paketleri kaldırabilir.


7

Bu komutları çalıştırın

sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip install MySQL-python 
pip install pymysql
pip install mysqlclient

Ardından settings.py gibi yapılandırın

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_db',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': '123456',
    }
}

MySQL bağlantısının keyfini çıkarın


4

Andy'nin yanıtı yardımcı olur, ancak django ayarınızda veritabanı parolanızı ifşa etme konusunda endişeleriniz varsa, mysql bağlantısında django resmi yapılandırmasını izlemenizi öneririz: https://docs.djangoproject.com/en/1.7/ref/databases/

Burada alıntı:

# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/path/to/my.cnf',
        },
    }
}


# my.cnf
[client]
database = NAME
user = USER
password = PASSWORD
default-character-set = utf8

'HOST': '127.0.0.1' ayarını değiştirmek için, my.cnf dosyasına eklemeniz yeterlidir:

# my.cnf
[client]
database = NAME
host = HOST NAME or IP
user = USER
password = PASSWORD
default-character-set = utf8

Yararlı olan bir başka SEÇENEK, depolama motorunuzu django için ayarlamaktır, bunu setting.py'de isteyebilirsiniz:

'OPTIONS': {
   'init_command': 'SET storage_engine=INNODB',
}

4

settings.py

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'django',
    'USER': 'root',
    'PASSWORD': '*****',
    'HOST': '***.***.***.***',
    'PORT': '3306',
    'OPTIONS': {
        'autocommit': True,
    },
}

}

sonra:

python manage.py migrate

eğer başarı tez tabloları oluşturacaksa:

auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
django_admin_log
django_content_type
django_migrations
django_session

ve u kullanacak mysql.

Bu bir vitrin örneğidir, Django sürüm 1.11.5 üzerinde test: Django-pool-showcase


3
  1. Yüklemek mysqlclient

sudo pip3 install mysqlclient

hata alırsanız:

"Python setup.py egg_info" komutu / tmp / pip-install-dbljg4tx / mysqlclient / içindeki hata kodu 1 ile başarısız oldu

sonra:

 1. sudo apt install libmysqlclient-dev python-mysqldb

 2. sudo pip3 install mysqlclient

  1. Settings.py dosyasını değiştirin

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'website',
            'USER': 'root',
            'PASSWORD': '',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'OPTION': {'init_command':"SET sql_mode='STRICT_TRANS_TABLE',"},
        }
    }

1

MySQL veritabanını kullanmak üzere ayarlamak için verilen adımları izleyin:

1) Install MySQL Database Connector :

    sudo apt-get install libmysqlclient-dev

2) Install the mysqlclient library :

    pip install mysqlclient

3) Install MySQL server, with the following command :

    sudo apt-get install mysql-server

4) Create the Database :

    i) Verify that the MySQL service is running:

        systemctl status mysql.service

    ii) Log in with your MySQL credentials using the following command where -u is the flag for declaring your username and -p is the flag that tells MySQL that this user requires a password :  

        mysql -u db_user -p


    iii) CREATE DATABASE db_name;

    iv) Exit MySQL server, press CTRL + D.

5) Add the MySQL Database Connection to your Application:

    i) Navigate to the settings.py file and replace the current DATABASES lines with the following:

        # Database
        # https://docs.djangoproject.com/en/2.0/ref/settings/#databases

        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'OPTIONS': {
                    'read_default_file': '/etc/mysql/my.cnf',
                },
            }
        }
        ...

    ii) Next, lets edit the config file so that it has your MySQL credentials. Use vi as sudo to edit the file and add the following information:

        sudo vi /etc/mysql/my.cnf

        database = db_name
        user = db_user
        password = db_password
        default-character-set = utf8

6) Once the file has been edited, we need to restart MySQL for the changes to take effect :

    systemctl daemon-reload

    systemctl restart mysql

7) Test MySQL Connection to Application:

    python manage.py runserver your-server-ip:8000

0

Önce bir MySQL veritabanı oluşturmalısınız. Ardından settings.pydosyaya gidin ve 'DATABASES'sözlüğü MySQL kimlik bilgilerinizle düzenleyin :

DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.mysql',
 'NAME': 'YOUR_DATABASE_NAME',
 'USER': 'YOUR_MYSQL_USER',
 'PASSWORD': 'YOUR_MYSQL_PASS',
 'HOST': 'localhost',   # Or an IP that your DB is hosted on
 'PORT': '3306',
 }
}

Django'yu bir sanal ağda MySQL kullanacak şekilde ayarlamak için eksiksiz bir kurulum kılavuzu:

http://codex.themedelta.com/how-to-install-django-with-mysql-in-a-virtualenv-on-linux/

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.