/ #python #web 

Встановлення зв'язки Django та MySQL на Debian 9

Встановлення Django

  1. Встановлюємо Python та додатковий інструментарій

    apt install python3 python3-pip python3-venv
    
  2. Створюємо папку для проекту та віртуальне середовище

    mkdir myproject
    cd myproject
    python3 -m venv venv
    source venv/bin/activate
    
  3. Встановлюємо Django та перевыряємо встановлену версію

    python3 -m pip install Django
    python -m django --version
    
  4. Створюємо новий проект

    django-admin startproject myproject
    

З’єднання з MySQL

  1. Встановлюємо Percona Server

    wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
    dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
    apt update
    apt install percona-server-server-5.7
    
  2. Створюємо базу данних

    CREATE DATABASE test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    GRANT ALL PRIVILEGES ON test.* TO 'test'@'localhost' IDENTIFIED BY 'password';
    FLUSH PRIVILEGES;
    
  3. Встановлюємо mysqlclient

    apt install libmysqlclient-dev
    

    Для percona-server отримаємо наступне попередження

        Чтение списков пакетов… Готово
        Построение дерева зависимостей       
        Чтение информации о состоянии… Готово
        Пакет libmysqlclient-dev — виртуальный, его функции предоставляются пакетами:
        libperconaserverclient20-dev 5.7.28-31-1.stretch
        libperconaserverclient18.1-dev 5.6.47-87.0-1.stretch
        libperconaserverclient18-dev 5.5.62-rel38.14-1.stretch
        Вы должны явно указать, какой именно вы хотите установить.
    
        E: Для пакета «libmysqlclient-dev» не найден кандидат на установку
    

    Уважно читаємо та робимо вибір у відповідності до встановленої версії MySQL (в нашому випадку версія 5.7)

    apt install libperconaserverclient20-dev
    
    python3 -m pip install mysqlclient
    
  4. Редагуэмо файл ~/myproject/myproject/settings.py:

        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'NAME': 'test',
                'USER': 'test',
                'PASSWORD': 'password',
                'HOST': 'localhost',
                'PORT': '',
            }
        }
    
  5. Створюємо і застосовуємо міграції

    python manage.py makemigrations
    cd myproject
    python3 manage.py migrate
    
        Operations to perform:
            Apply all migrations: admin, auth, contenttypes, sessions
        Running migrations:
            Applying contenttypes.0001_initial... OK
            Applying auth.0001_initial... OK
            Applying admin.0001_initial... OK
            Applying admin.0002_logentry_remove_auto_add... OK
            Applying admin.0003_logentry_add_action_flag_choices... OK
            Applying contenttypes.0002_remove_content_type_name... OK
            Applying auth.0002_alter_permission_name_max_length... OK
            Applying auth.0003_alter_user_email_max_length... OK
            Applying auth.0004_alter_user_username_opts... OK
            Applying auth.0005_alter_user_last_login_null... OK
            Applying auth.0006_require_contenttypes_0002... OK
            Applying auth.0007_alter_validators_add_error_messages... OK
            Applying auth.0008_alter_user_username_max_length... OK
            Applying auth.0009_alter_user_last_name_max_length... OK
            Applying auth.0010_alter_group_name_max_length... OK
            Applying auth.0011_update_proxy_permissions... OK
            Applying sessions.0001_initial... OK
    
  6. Створюємо адміністратора

    python3 manage.py createsuperuser
    
  7. Запускаємо сервер

    python3 manage.py runserver
    
Author

Олександр Бобилєв

Залишаю собі право використовувати ненормативну (але інформативну) лексику там, де звичайні слова втрачають сенс і не відображають всієї палітри почуттів, від споглядання навколишньої дійсності.