Меню Рубрики

Установка mysql для django

Инструкция: как перевести проект Django с SQLite на MySQL без боли

Основано на ответе пользователя Carlos Henrique Cano на Stack Overflow и собственном опыте

SQLite3 является СУБД-движком по умолчанию в Python веб-фреймворке Django, а также, как сообщается на официальном сайте проекта, самым часто используемым движком в мире. И он отлично походит для быстрого прототипирования веб-проекта, однако имеет ряд недостатков, о которых мы рассказывали в одной из статей на нашем сайте, и по мере роста веб-приложения приходится переходить на полнофункциональную РСУБД — например, MySQL. И здесь разработчик может столкнуться с проблемами. Мы предлагаем воспользоваться нижеследующей инструкцией, чтобы их избежать или хотя бы максимально снизить вероятность их появления.

Инструкция написана для следующей конфигурации: Ubuntu 16.04, Python 3.5.2, Django 1.10.4.

    Установка сервера и консольного клиента MySQL:

В процессе установки сервера перед вами появится окошко с предложением задать пароль для root-пользователя MySQL.
Создание базы данных для работы веб-приложения Django:

Вы перейдете в консольный клиент MySQL. Введите пароль root-пользователя, заданный в диалоговом окне на предыдущем шаге. В консольном клиенте введите следующую команду:

Замените «someapp» на название вашего приложения в Django. Задание CHARACTER SET необходимо для корректной работы Django с базой данных.
Создание отдельного пользователя для Django в MySQL:

Укажите свой пароль вместо «password» и название своего приложения вместо «someapp». Второй и третьей командой пользователю django выдаются права на созданную ранее таблицу.

  • Нажмите Ctrl-D для выхода из консольного клиента MySQL.
  • Установка библиотек и пакетов, необходимых для работы с MySQL из Python:

    Обратите внимание, что mysqlclient является форком официального драйвера MySQLdb, но мы используем первый, потому что он поддерживает Python 3. На момент написания статьи MySQLdb не поддерживает третью версию языка.
    Создание дампа данных:

    При выполнении этой команды все еще используется SQLite БД — именно из нее выгружаются данные.
    Изменение настроек проекта на использование MySQL:

    Замените «someapp» на название созданной вами для приложения базы данных. Также обратите внимание, что вам необходимо задать корректный путь к файлу в первом фрагменте кода.

  • Проведите миграции в Django и загрузите данные:
  • Теперь ваши данные успешно перенесены в СУБД MySQL. В случае если у вас возникнут трудности при точном следовании этой инструкции, сообщайте в комментариях к этой статье — будем разбираться и добавлять примечания, чтобы сформировать универсальное руководство.

    источник

    Настройка Django для использования MySQL

    Я хочу немного отойти от PHP и изучить Python. Для того, чтобы сделать веб-разработку С Python мне понадобится фреймворк, чтобы помочь с шаблонами и другими вещами.

    У меня есть непроизводственный сервер, который я использую для тестирования всех материалов веб-разработки. Это стек лампы Debian 7.1, который запускает MariaDB вместо общего пакета MySQL-server.

    вчера я установил Django и создал свой первый проект под названием firstweb. Я ничего не изменил. настройки пока нет.

    вот мой первый большой кусок путаницы. В учебнике я следил за тем, как парень установил Django, начал свой первый проект, перезапустил Apache, и Django просто работал с тех пор. Он пошел в свой браузер и пошел на страницу Django по умолчанию без проблем.

    меня однако, я должен компакт-диск в мою папку firstweb и запустить

    и это работает. Не проблема. Но мне интересно, должно ли это работать так, и если это вызовет проблемы вниз по линии?

    мой второй вопрос я хочу настроить его так, чтобы он использовал мою базу данных MySQL. Я иду в свою . settings.py под /firstweb / firstweb и я вижу двигатель и имя, но я не уверен, что поставить здесь.

    а затем в области пользователя, пароля и хоста это моя база данных и ее учетные данные? Если я использую localhost в могу я просто поставить localhost в в принимающей области?

    Читайте также:  Установка пластиковых балконов в актобе

    10 ответов

    поддержка MySQL просто добавить. В DATABASES словарь, у вас будет такая запись:

    у вас также есть возможность использовать MySQL option files, по состоянию на Django 1.7. Вы можете сделать это, установив свой DATABASES массив вот так:

    Вам также необходимо создать /path/to/my.cnf файл с аналогичными настройками сверху

    С этим новым методом подключения в Django 1.7, он важно знать порядок установления соединений:

    другими словами, если вы установите имя базы данных в параметрах, это будет иметь приоритет над именем, которое переопределит что-либо в файле опций MySQL.

    если вы просто тестируете свое приложение на локальном компьютере, вы можете использовать

    добавлять ip:port аргумент позволяет машинам, отличным от ваших, получить доступ к вашей разработке приложение. Как только вы будете готовы развернуть свое приложение, я рекомендую взглянуть на главу Развертывание Django на djangobook

    набор символов Mysql по умолчанию часто не utf-8, поэтому обязательно создайте свою базу данных с помощью этого sql:

    если вы используете MySQL разъем Oracle код ENGINE строка должна выглядеть так:

    к самому первому, пожалуйста, запустите приведенные ниже команды для установки зависимостей python, иначе команда python runserver выдаст ошибку.

    затем настройте settings.py файл, определенный #Andy и при последнем выполнении:

    как все сказано выше, вы можете легко установить xampp сначала изhttps://www.apachefriends.org/download.html Затем следуйте инструкциям, как:

    1. установить и запустить xampp из http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/, затем запустите веб-сервер Apache и базу данных MySQL из GUI.
    2. вы можете настроить свой веб сервер как вы хотите, но по умолчанию веб-сервер находится на http://localhost:80 и базы данных port 3306 , и PhpMyadmin at http://localhost/phpmyadmin/
    3. отсюда вы можете увидеть свои базы данных и получить к ним доступ с помощью очень дружественного GUI.
    4. создайте любую базу данных, которую вы хотите использовать в своем проекте Django.

    установите следующие пакеты в virtualenv (если вы используете django на virtualenv, что более предпочтительно):

    sudo apt-get install libmysqlclient-dev

    pip установить MySQL-python

    вот именно!! вы настроили Django с MySQL очень простым способом.

    источник

    Предложение от 8host.com

    Создание приложения Django и подключение к базе данных

    Django – это свободный и открытый веб-фреймворк Python, который поддерживает масштабируемость, повторное использование и быструю разработку кода.

    В данном мануале вы узнаете, как создать основу для блога и подключить его к базе данных MySQL. Для этого нужно создать «скелет» веб-приложения с помощью django-admin, затем создать БД MySQL и подключить веб-приложение к базе данных.

    Требования

    • Сервер Ubuntu 16.04, настроенный согласно этому руководству.
    • Предварительно установленный фреймворк Django (инструкции по установке и настройке среды разработки вы найдете здесь).
    • MySQL (установить эту СУБД вам поможет мануал Установка последней версии MySQL в Ubuntu 16.04).

    1: Создание каркаса проекта Django

    Чтобы заложить основу приложения, нужно сгенерировать скелет проекта, используя команду django-admin. Этот каркас станет основой приложения для блога.

    Перейдите в домашний каталог:

    Просмотрите его содержимое:

    Если вы выполнили руководство по установке Django, вы увидите такой каталог:

    Это скелет проекта, который был сгенерирован для проверки установки.

    Этот каталог вам не подойдет. Создайте новый каталог для приложения блога. Выберите для него описательное имя; в руководстве используется my_blog_app.

    Перейдите в новый каталог:

    Чтобы сгенерировать проект, запустите команду:

    django-admin startproject blog

    Чтобы убедиться, что все выполнено правильно, попробуйте перейти в каталог blog/:

    Каталог blog/ должен появиться в текущем каталоге

    /my_blog_app/ после запуска команды django-admin.

    Запустите ls, чтобы убедиться, что все необходимые элементы были созданы. Должен быть каталог blog и файл manage.py:

    2: Настройка проекта

    Сгенерировав проект, вы создали файл settings.py.

    Чтобы блог использовал правильное время, связанное с вашим часовым поясом, отредактируйте файл settings.py. Этот список часовых поясов может вам помочь. В данном примере используется пояс America/New_York.

    Откройте каталог, в котором находится нужный файл:

    .
    # Internationalization
    # https://docs.djangoproject.com/en/1.11/topics/i18n/
    LANGUAGE_CODE = ‘en-us’
    TIME_ZONE = ‘UTC’
    USE_I18N = True
    USE_L10N = True
    USE_TZ = True
    .

    .
    # Internationalization
    # https://docs.djangoproject.com/en/1.11/topics/i18n/
    LANGUAGE_CODE = ‘en-us’
    TIME_ZONE = ‘ America/New_York ‘
    USE_I18N = True
    .

    Не закрывайте файл – далее нужно будет добавить путь к статическим файлам. Файлы, которые обслуживаются веб-приложением Django, называются статическими файлами. К ним относятся любые файлы для отображения веб-страницы, включая JavaScript, CSS и изображения.

    Перейдите в конец settings.py и найдите STATIC_ROOT.

    .
    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/1.11/howto/static-files/
    STATIC_URL = ‘/static/’
    STATIC_ROOT = os.path.join(BASE_DIR, ‘static’)

    Теперь, когда часовой пояс и путь для статических файлов указаны правильно, нужно добавить ваш IP-адрес в список разрешенных хостов. Перейдите к строке ALLOWED_HOSTS, которая находится в верхней части файла settings.py.

    .
    # SECURITY WARNING: don’t run with debug turned on in production!
    DEBUG = True
    ALLOWED_HOSTS = [‘ your server IP address ‘]
    # Application definition
    .

    Добавьте в скобки свой IP-адрес, взяв его в одинарные кавычки.

    Теперь сохраните и закройте файл.

    3: Установка соединения с базой данных MySQL

    Чтобы использовать MySQL в проекте, понадобится соединительная библиотека Python 3, совместимая с Django. Установите соединитель баз данных mysqlclient, который является форком MySQLdb.

    Согласно документации mysqlclient, «MySQLdb — это поточно-совместимый интерфейс к популярному серверу базы данных MySQL, который предоставляет API баз данных Python». Основное преимущество заключается в том, что mysqlclient поддерживает Python 3.

    Для начала установите python3-dev.

    sudo apt-get install python3-dev

    Затем установите заголовки и библиотеки Python и MySQL.

    sudo apt-get install python3-dev libmysqlclient-dev

    Когда увидите такое сообщение:

    After this operation, 11.9 MB of additional disk space will be used.
    Do you want to continue? [Y/n]

    Нажмите y и ENTER, чтобы продолжить.

    С помощью pip3 установите библиотеку mysqlclient из PyPi:

    sudo pip3 install mysqlclient

    Команда выведет на экран следующее:

    successfully installed mysqlclient
    Collecting mysqlclient
    Downloading mysqlclient-1.3.10.tar.gz (82kB)
    100% |████████████████████████████████| 92kB 6.7MB/s
    Building wheels for collected packages: mysqlclient
    Running setup.py bdist_wheel for mysqlclient . done
    Stored in directory: /root/.cache/pip/wheels/32/50/86/c7be3383279812efb2378c7b393567569a8ab1307c75d40c5a
    Successfully built mysqlclient
    Installing collected packages: mysqlclient
    Successfully installed mysqlclient-1.3.10

    4: Создание базы данных

    На данный момент у вас есть каркас приложения и соединитель mysqlclient. Теперь можно настроить бэкэнд Django для поддержки MySQL.

    Сначала инициируйте сервис MySQL:

    systemctl status mysql.service
    starting mysql.service
    mysql.service — MySQL Community Server
    Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
    Active: active (running) since Sat 2017-08-19 11:59:33 UTC; 1min 44s ago
    Main PID: 26525 (mysqld)
    CGroup: /system.slice/mysql.service
    └─26525 /usr/sbin/mysqld

    Теперь вы можете войти в MySQL с помощью учетных данных, используя следующую команду. Флаг -u позволяет указать пользователя, а -p включает запрос пароля MySQL:

    Примечание: Вместо db_user укажите имя вашего пользователя базы данных.

    Укажите пароль своего пользователя БД. После этого на экране появится:

    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 6
    Server version: 5.7.19-0ubuntu0.16.04.1 (Ubuntu)
    Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

    Запросите список текущих баз данных MySQL:

    Команда выведет имена всех БД, которые существуют на данный момент:

    Примечание: Если при попытке подключиться вы получили ошибку, убедитесь, что правильно ввели пароль и установили MySQL. Также можно проконсультироваться с руководством по установке и настройке MySQL.

    По умолчанию в MySQL есть 4 БД: information_schema, MySQL, performance_schema и sys. Не трогайте их – они содержат важную для сервера MySQL информацию.

    Теперь создайте исходную базу данных, в которой будут храниться данные блога.

    Для этого запустите эту команду, указав описательное имя для новой БД.

    CREATE DATABASE blog_data ;

    После успешного создания базы данных вы увидите следующий результат:

    Query OK, 1 row affected (0.00 sec)

    Примечание: Если вы видите на экране такой вывод:

    database creation failed
    ERROR 1007 (HY000): Can’t create database blog_data ; database exists

    значит, БД с таким именем уже существует. Если же вы видите следующую ошибку MySQL:

    database creation failed
    ERROR 1064 (42000): You have an error in your SQL syntax;

    это означает, что в команде допущена синтаксическая ошибка. Убедитесь, что вы ввели команду точно так, как показано выше.

    Снова просмотрите список доступных БД:

    В списке должна появиться новая БД blog_data:

    +——————-+
    | Database |
    +——————-+
    | information_schema|
    | blog_data |
    | MySQL |
    | performance_schema|
    | sys |
    +——————-+
    5 rows in set (0.00 sec)

    База данных для блога полностью готова.

    Чтобы выйти из MySQL, нажмите CTRL + D.

    5: Настройка соединения базы данных MySQL и приложения

    Теперь нужно добавить учетные данные БД в настройки приложения Django.

    Примечание: Важно помнить, что настройки соединения согласно документации Django используются в следующем порядке:

    — опции
    — имя, пользователь, пароль, хост, порт
    — файлы параметров MySQL.

    Внесите все необходимые поправки.

    Перейдите в файл settings.py и замените все текущие строки DATABASES следующими строками. Приложение должно знать, как использовать MySQL в качестве базы данных и из какого файла читать учетные данные для подключения к БД:

    # Database
    # https://docs.djangoproject.com/en/1.11/ref/settings/#databases
    DATABASES = <
    ‘default’: <
    ‘ENGINE’: ‘django.db.backends.mysql’,
    ‘OPTIONS’: <
    ‘read_default_file’: ‘/etc/mysql/my.cnf’,
    >,
    >
    >
    .

    Затем нужно указать в конфигурационном файле учетные данные MySQL. Откройте файл в nano и добавьте следующую информацию:

    sudo nano /etc/mysql/my.cnf
    .
    [client]
    database = db_name
    user = db_user
    password = db_password
    default-character-set = utf8

    utf8 устанавливается как шифрование по умолчанию, это обычный способ кодирования данных Unicode в MySQL.

    После этого перезапустите MySQL:

    systemctl daemon-reload
    systemctl restart mysql

    Это займет несколько минут.

    6: Проверка соединения между приложением и БД MySQL

    Теперь нужно убедиться, что приложение Django может подключиться к MySQL. Для этого просто запустите сервер. Если запустить его не получится, значит, соединение не получается создать. В противном случае соединение работает.

    Перейдите в следующий каталог:

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

    Performing system checks.
    System check identified no issues (0 silenced).
    You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
    Run ‘python manage.py migrate’ to apply them.
    August 19, 2017 — 15:45:39
    Django version 1.11.4, using settings ‘blog.settings’
    Starting development server at http:// your-server-ip :8000/
    Quit the server with CONTROL-C.

    Следуя инструкциям из вывода, перейдите по следующей ссылке:

    чтобы просмотреть веб-приложение и убедиться, что оно работает правильно. Вы должны увидеть страницу:

    It worked!
    Congratulations on your first Django powered page.

    Если такая страница появилась – приложение Django работает правильно!

    источник

    Django. Как подключиться к существующей модели MySQL?

    Есть на диске база данных mysql. Не врублюсь, с помощью чего подключаться, то ли так
    django-admin.py syncdb
    вылетает ошибки:

    Но syncdb и не должна здесь подходить, вроде.

    Здесь, вроде, как подходит
    django-admin.py migrate
    но пишет, что команда migrate не найдена. Надо что-то через pip установить, видимо.

    manage.py syncdb — синхронизация моделей с базой.

    Установить либу:
    sudo apt-get install python-mysqldb

    1. Сначала создайте базу вручную на сервере Mysql.

    2. Укажите в NAME название базы, а не полный путь до базы, ‘NAME’: ‘Didondo’,

    3. добавьте PASSWORD если он установлен в Mysql.

    4. Запускайте manage.py syncdb

    P.S. manage.py migrate запускает миграции если установлен South

    1. А база и так на сервере.
    2. NAME исправила
    3. Пароля нет

    Еще надо было установить через pip MySQL-python.

    Но сейчас другая ошибка:
    super(Connection, self).__init__(*args, **kwargs2)
    TypeError: keywords must be strings

    DATABASES = <
    ‘default’: <
    ‘ENGINE’: ‘django.db.backends.mysql’,
    ‘NAME’: ‘dbname’,
    ‘USER’: ‘root’,
    ‘PASSWORD’: »
    >
    >

    Попробуйте оставить конфиг с минимальными настройками.

    источник

    Добавить комментарий