Инструкция: как перевести проект Django с SQLite на MySQL без боли
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 выдаются права на созданную ранее таблицу.
Обратите внимание, что mysqlclient является форком официального драйвера MySQLdb, но мы используем первый, потому что он поддерживает Python 3. На момент написания статьи MySQLdb не поддерживает третью версию языка.
Создание дампа данных:
При выполнении этой команды все еще используется SQLite БД — именно из нее выгружаются данные.
Изменение настроек проекта на использование MySQL:
Замените «someapp» на название созданной вами для приложения базы данных. Также обратите внимание, что вам необходимо задать корректный путь к файлу в первом фрагменте кода.
Теперь ваши данные успешно перенесены в СУБД MySQL. В случае если у вас возникнут трудности при точном следовании этой инструкции, сообщайте в комментариях к этой статье — будем разбираться и добавлять примечания, чтобы сформировать универсальное руководство.
Основано на ответе пользователя Carlos Henrique Cano на Stack Overflow и собственном опыте
Django, MySQL for Windows
Dec 1, 2017 · 3 min read
Personally i prefer Postgres for my applications, however like all things some poeple prefer others such as MySQL, MSSQL or even MongoDB.
To get started we need to confirm what version of Python you are running this can be achieved by opening a command prompt and entering the following:
Mine is currently Python 3.6.3, this tutorial should work the same if you are using a different version of Python however, the same results cannot be guaranteed.
We need a Virtualenv
As with any project we s h ould always use a virtual environment, this allows us to isolate the packages we have from our global Python install.
Lets get started by making sure we have one setup. But first we need to install virtualenv if we dont already.
Now we need a place to store them for my projects i do the following structure:
I like to keep the environment and the app in a root folder of the project name for this instance its called awesomeapp.io, the virtualenv will live in the env folder and the Django app will live in app. This is not mandatory this is just how i store my files.
So lets set that up now:
We need to activate it now, we do so by entering the following for Windows:
We can confirm it is active by seeing (virtualenvname) before the CMD prompt, like so:
Django, Mysql
Before we install these pip packages we need to make sure our system is setup to connect to MySQL, we need to ensure we have the correct MySQL Python connector.
You can go to https://dev.mysql.com/downloads/connector/python/ and download the correct version for your system.
The missing step here would be to ensure you have MySQL server installed on your local machine aswell if you intend to develop on a local database initially. For this example i will be connecting to a remote MySQL database.
We can now install Django and any other packages we want, for this example we will just get MySQL.
This will download and install the packages. We will now setup our test application and store the files in the app folder.
We can now build our DATABASES settings in our settings.py as follows, i will using VS Code to edit.
To check it is working we will simply make migrations and migrate
There we go we have a solid connection to a MySQL database from a django project running on Windows.
Django + MySQL + Windows = Error?
Уже потратил уйму времени на попытку соединить Django с MySQL под Windows.
Подскажите как решить данную проблему
- Вопрос задан более трёх лет назад
- 6952 просмотра
Проверьте, что нигде-нигде нет кириллицы:
— %PATH% и прочие переменные окружения
— имя компьютера
— CLSID от питоновских ассоциаций
— возможно, в настройках мускуля и его дров
А вообще, судя по тому, что пишут в интернетах, дешевле поднять виртуалку с линухом, чем это отлаживать 🙁
откройте c:\Python27\lib\site-packages\django\db\backends\mysql\base.py, в 16 строку вставьте
и в консоле, когда выпадет pdb, напишите print e . Что будет?
Здравствуйте.
Помогите мне с проблемой. Под виндовс 7 32bit установил python 2.7.8, django 1.7.1, mysql. Все вроде бы работает сайт открывается и с базы данных вытягивает данные, но в консоле shell когда выполняю такую команду
Установлен модуль для мой операционки MySQL-python-1.2.5.win32-py2.7, ставил также дополнительно mysqlclient 1.3.4, pymysql но ничего не происходит ошибка так и есть!
Поднимаем Django стек на MS Windows
В данной статье будет представлена подробная инструкция по установке и настройке программ Apache, Python и PostgreSQL для обеспечения работы Django проекта в ОС MS Windows. Django уже включает в себя упрощенный сервер разработки для локального тестирования кода, но для задач, связанных с продакшен, требуется более безопасный и мощный веб-сервер. Мы настроим mod_wsgi для взаимодействия с нашим проектом и настроим Apache в качестве шлюза в внешний мир.
Стоит отметить, что установка и настройка будет производиться в ОС MS Windows 10 с 32 разрядностью. Также 32 битная реакция будет универсальна и будет работать на 64 битной архитектуре. Если вам нужна 64 битная установка повторите те же действия для 64 битных дистрибутивов программ, последовательность действий будет идентична.
В качестве Django проекта будем использовать программу Severcart. Она предназначена для управления перемещениями картриджей, учёта печатающего оборудования и договоров поставки и обслуживания. Установка всех программ и модулей будет производиться в каталог C:\severcart. Местоположение не принципиально.
Python
Первым шагом является загрузка и установка Python с веб-сайта Python. Выбираем Windows в качестве операционной системы и 32-битную версию. На момент написания статьи текущей версией является 3.9.0rc2.
Загрузив файл установки, щелкните правой кнопкой мыши файл установки и выберите «Запуск от имени администратора». Вы должны увидеть экран ниже
Устанавливаем галочки напротив чекбоксов «Install launcher for add user (recomended)» и «Add Python 3.9 to PATH» и нажимаем на «Customize installation».
Устанавливаем галочки на против «pip», «py launcher», «for all users (requires elevation)» и нажимаем «Next».
Выбираем все поля ввода как на картинке выше и нажимаем на «Install».
Чтобы убедиться, что установка прошла успешно, откройте cmd и введите python. Если установка прошла успешно, вы должны увидеть приглашение, подобный приведенному ниже
Устанавливаем mod_wsgi
gohlke/pythonlibs. Модуль выполняет функции посредника межу сервером Apache и Django проектом. Самый свежий пакет будет с именем mod_wsgi-4.7.1-cp39-cp39-win32.whl. Обратите внимание, что пакет скомпилирован для 32 битной Windows CPython версии 3.9. Также стоит отметить, что очевидная установка модуля pip install mod_wsgi скорее всего завершится ошибкой, т.к. в процессе установки потребуется компилятор Visual Studio C++. Ставить компилятор целиком ради одного Python пакета в Windows считаем нецелесообразным.
Устанавливаем модуль с помощью стандартного пакетного менеджера pip в cmd или powershell:
Apache
Скачиваем дистрибутив с сайта https://www.apachelounge.com/download/.
Самая свежая версия Web-сервера является Apache 2.4.46 win32 VS16. Также для работы программы понадобиться заранее установленный пакет «Visual C++ Redistributable for Visual Studio 2019 x86».
Распаковываем дистрибутив Apache в каталог C:\severcart\Apache24, далее меняем строку с номером 37 на свою
Проверяем работу Apache, выполнив в командной строке
В результате должны увидеть в браузере по адресу 127.0.0.1 строку «It works!».
Устанавливаем службу Apache, для этого выполним в командной строке от имени Администратора инструкцию:
Далее подключим модуль mod_wsgi к Apache. Для этого выполним в командной строке инструкцию
В результате в стандартный вывод будет распечатаны строки:
Создаем файл C:\severcart\Apache24\conf\extra\httpd-wsgi.conf и копипастим туда распечатанные строки выше.
Подключаем новую конфигурацию к основному файлу httpd.conf
Include conf/extra/httpd-wsgi.conf
Сохраняем изменения, перезагружаем службы Apache
PostgreSQL
Устанавливаем PostgreSQL взятый с сайта https://postgrespro.ru/windows. Текущая версия программного продукта – 12. Преимущества Российского дистрибутива от канонического представлены на том же сайте.
Действия по установке представлены выше и комментариях не нуждаются. Установка крайне проста.
Создаем БД в postgres, где потом будут храниться структуры данных Django проекта
БД создана. Теперь разворачиваем Django проект.
Устанавливаем web приложение
Для этого скачиваем zip архив с сайта https://www.severcart.ru/downloads/ и распаковываем в каталог C:\severcart\app\
Вносим изменения в главный конфигурационный файл C:\severcart\app\conf\settings_prod.py для указания реквизитов подключения к БД
Python словарь DATABASES содержит в себе реквизиты подключения к БД. Подробности по настройке читайте здесь https://docs.djangoproject.com/en/3.1/ref/databases/#connecting-to-the-database
Устанавливаем Python пакеты значимостей для работы приложений внутри Django проекта
В процессе работы скрипта будет произведена инициализация БД таблицами, констрейтами, индексами и прочим, а будет предложено создать пользователя, от имени которого будет производиться работа в программе.
Подключаем Django приложение к серверу Apache для этого дополняем конфигурационный файл
httpd-wsgi.conf следующим текстом
Перезагружаем службу Apache и проверяем работу приложения
На этом все. Спасибо что дочитали.
В следующей статье будем создавать установочный самораспаковывающийся архив в InnoSetup для быстрого развертывания Django проекта на компьютере заказчика. Для тех кто хочет повторить все действия на Яндекс.Диск загружены все используемые дистрибутивы.