Ustawienie Django na MySQL

Chcę odejść trochę od PHP i nauczyć się Pythona. W celu tworzenia stron internetowych z Pythonem będę potrzebował frameworka do pomocy z szablonami i innymi rzeczami.

Mam serwer nieprodukcyjny, którego używam do testowania wszystkich rzeczy związanych z tworzeniem stron internetowych. Jest to stos LAMP Debiana 7.1, który uruchamia MariaDB zamiast wspólnego pakietu MySQL-server.

Wczoraj zainstalowałem Django i stworzyłem swój pierwszy projekt o nazwie firstweb. Nie zmieniłem żadnych ustawień jeszcze.

Oto mój pierwszy wielki kawałek zamieszania. W samouczku śledziłem gościa, który zainstalował Django, rozpoczął swój pierwszy projekt, zrestartował Apache, a Django po prostu działało od tego czasu. Przeszedł do swojej przeglądarki i bez problemów przeszedł do domyślnej strony Django.

Ja jednak muszę cd do folderu firstweb i uruchomić

python manage.py runserver myip:port
I działa. Nie ma sprawy. Ale zastanawiam się, czy to ma tak działać i czy będzie to powodować problemy w dół linii?

Mój drugie pytanie jest to, że chcę go skonfigurować tak, aby używał mojej bazy danych MySQL. I go into my settings.py pod /firstweb / firstweb i widzę silnik i nazwę, ale nie jestem pewien, co tu umieścić.

A następnie w obszarach USER, PASSWORD I HOST czy jest to moja baza danych i jej poświadczenia? Jeśli używam localhostczy mogę po prostu umieścić localhost w obszarze hosta?

Author: FeedTheWeb, 2013-10-05

10 answers

Obsługa MySQL jest prosta do dodania. W twoim słowniku DATABASES będziesz miał taki wpis:

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',
    }
}

Masz również możliwość korzystania z plików opcji MySQL , począwszy od Django 1.7. Możesz to osiągnąć ustawiając tablicę {[7] } w następujący sposób:

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

Musisz również utworzyć plik /path/to/my.cnf z podobnymi ustawieniami z góry

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

Z tą nową metodą łączenia w Django 1.7, ważne jest, aby wiedzieć, że kolejność połączeń jest utworzony:

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

Innymi słowy, jeśli ustawisz nazwę bazy danych w OPTIONS, będzie to miało pierwszeństwo przed nazwą, która nadpisze cokolwiek w pliku opcji MySQL.


Jeśli tylko testujesz swoją aplikację na lokalnym komputerze, możesz użyć

python manage.py runserver

Dodanie argumentu ip:port pozwala maszynom innym niż twój dostęp do Twojej aplikacji deweloperskiej. Gdy już będziesz gotowy do wdrożenia aplikacji, polecam przyjrzeć się rozdział o wdrożeniu Django na djangobook

Domyślnym zestawem znaków Mysql często nie jest utf-8, dlatego pamiętaj, aby utworzyć bazę danych za pomocą tego sql:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin

Jeśli używaszłącznika MySQL Oracle twoja linia ENGINE powinna wyglądać tak:

'ENGINE': 'mysql.connector.django',
 232
Author: Andy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-21 13:51:36

Do pierwszego uruchom poniższe polecenia, aby zainstalować zależności Pythona, w przeciwnym razie polecenie runserver Pythona spowoduje błąd.

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

Następnie skonfiguruj settings.py plik zdefiniowany przez # Andy i przy ostatnim wykonaniu:

python manage.py runserver
Baw się dobrze..!!
 21
Author: Ritesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-29 13:56:22

Jak wszystko zostało powiedziane powyżej, możesz łatwo zainstalować xampp najpierw z https://www.apachefriends.org/download.html Następnie postępuj zgodnie z instrukcjami:

  1. Zainstaluj i uruchom xampp z http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/, Następnie uruchom serwer WWW Apache i bazę danych MySQL z GUI.
  2. Możesz skonfigurować swój serwer WWW tak, jak chcesz, ale domyślnie serwer WWW znajduje się pod adresem http://localhost:80 i bazy danych pod adresem port 3306, A PhpMyadmin pod adresem http://localhost/phpmyadmin/
  3. From here you możesz zobaczyć swoje bazy danych i uzyskać do nich dostęp za pomocą bardzo przyjaznego GUI.
  4. Utwórz dowolną bazę danych, której chcesz użyć w swoim projekcie Django.
  5. Edytuj swój settings.py Plik jak:

    DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DB_NAME',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': '',
    }}
    
  6. Zainstaluj następujące pakiety w virtualenv (jeśli używasz django na virtualenv, co jest bardziej preferowane):

    Sudo apt-get install libmysqlclient-dev

    Pip install MySQL-python

  7. To jest to!! skonfigurowałeś Django z MySQL w bardzo łatwy sposób.

  8. Teraz uruchom swój projekt Django:

    Python manage.py migrate

    Python manage.py runserver

 13
Author: root,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-30 19:38:08

Jeśli używasz python3.x następnie uruchom polecenie

pip install mysqlclient

Następnie zmień setting.py jak

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'DB',
     'USER': 'username',
    'PASSWORD': 'passwd',
  }
  }
 9
Author: Manoj Jadhav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-06 11:56:10

Właściwie, jest wiele problemów z różnymi środowiskami, wersjami Pythona, itd. Może być też konieczne zainstalowanie plików dev Pythona, więc aby "brute-force" instalacji, uruchomiłbym wszystkie z nich:

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

Powinieneś być dobry, aby przejść z zaakceptowaną odpowiedzią. I może usunąć niepotrzebne pakiety, jeśli jest to dla Ciebie ważne.

 8
Author: mimoralea,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-04 19:50:50

Odpowiedź Andy ' ego pomaga, ale jeśli masz problem z ujawnieniem hasła do bazy danych w ustawieniu django, proponuję podążać za oficjalną konfiguracją django na połączeniu mysql: https://docs.djangoproject.com/en/1.7/ref/databases/

Przytoczony tutaj jako:

# 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

Aby zastąpić' HOST': '127.0.0.1' w ustawieniu, po prostu dodaj go w moim."cnf": {]}

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

Inną opcją, która jest przydatna, jest ustawienie silnika pamięci dla django, możesz chcieć go w swoim setting.py:

'OPTIONS': {
   'init_command': 'SET storage_engine=INNODB',
}
 3
Author: Jiawei Dai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-29 04:13:55

Uruchom te polecenia

Sudo apt-get install python-dev python3-dev

Sudo apt-get install libmysqlclient-dev

Pip install MySQL-python

Pip install pymysql

Pip install mysqlclient

Następnie skonfiguruj settings.py jak

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

Enjoy MySQL connection

 3
Author: Deepak Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-21 13:30:56

Settings.py

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

}

Wtedy:

python manage.py migrate

Jeśli sukces wygeneruje te tabele:

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

I u will mogą używać mysql.

To jest przykład pokazowy, test na Django w wersji 1.11.5: Django-pool-showcase

 2
Author: LuciferJack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-22 09:54:15

Najpierw musisz utworzyć bazę danych MySQL. Następnie przejdź do pliku settings.py i edytuj słownik 'DATABASES' z poświadczeniami MySQL:

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',
 }
}

Oto kompletny przewodnik instalacji dla skonfigurowania Django do używania MySQL na virtualenv:

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

 0
Author: Sibi M,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-22 11:53:20

Wykonaj podane kroki, aby skonfigurować go do korzystania z bazy danych MySQL:

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, let’s 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
Author: Shubham Gupta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-05 15:55:12