Я пишу веб-приложение, используя Python 3.2
& Django 1.6
. Мне нужна безопасная база данных, но Django
не поддерживает mysql
на python 3, поэтому единственным выбором для меня является sqlite
. Я все равно защищаю эту базу данных с помощью .htaacess
или могу попробовать другие типы баз данных?База данных Django в Python3
ответ
Ваши конфиденциальные данные: Джанго скрипты, базы данных, журналы, ... должны всегда находиться вне веб-корневой папке поэтому нет никакой возможности доступа из Интернета. Использование .htaccess
- не лучший способ приблизиться к проблеме безопасности.
Если вы действительно это нужно, а затем сделать правило каталога, чтобы запретить папку, содержащую SQLite базу данных в конфигурации Apache сайтов или добавить .htaccess
файл, содержащий следующий текст в папку, где у вас есть базы данных SQLite:
deny from all
Это должно быть сделано. Но опять же, выше решение не является хорошей практикой, вы должны настроить свой веб-сервер, так что веб-корень находится в public/
вложенной:
[project root]
[project name]
[media]
[static]
[templates]
[public] <= your webserver should point to this directory as root
(see below); used in production with collecstatic method
[data]
[db]
mydata.sqlite <= you could put your sqlite database here,
available to your django app and unavailable
to web users.
settings.py
urls.py
views.py
manage.py
Apache должен быть настроен таким образом, что ваш домен, скажем example.com
имеет DocumentRoot
, который указывает на [...]/project root/project name/public/
, чтобы все остальные папки были недоступны извне.
Можете ли вы объяснить свое предложение немного больше? –
Я подробно изложил свой ответ. Спросите, нужна ли вам еще подробная информация;) – achedeuzot
поддержка Джанго 4 Тип двигателя База данных:
- PostgreSQL (http://www.postgresql.org/)
- SQLite 3 (http://www.sqlite.org/)
- MySQL (http://www.mysql.com/)
- Oracle (http://www.oracle.com/)
По большей части все перечисленные здесь двигатели работают так же, как мы ll с основной картой Django (заметное исключение должно быть поднято для поддержки необязательного GIS Django, который намного мощнее, чем с другой базой данных PostgreSQL). Если вы не привязаны к определенной унаследованной системе и имеете свободу выбора баз данных, мы рекомендуем PostgreSQL, основанную на балансе между стоимостью, функциями, скоростью и стабильностью.
Настройка базы данных представляет собой процесс, который происходит в два этапа:
Во-первых, необходимо установить и настроить сам сервер базы данных. Этот процесс выходит за рамки этой книги, но каждая из четырех перечисленных здесь баз данных имеет обширную документацию на своем веб-сайте. (Если вы используете общий хостинг, очень вероятно, что ваш провайдер уже установил все это для вас). Во-вторых, вам необходимо установить библиотеку Python для вашей конкретной базы данных. Это делается с помощью стороннего кода, который позволяет Python взаимодействовать с базой данных.
Если вы просто играете с Django и не хотите устанавливать сервер базы данных, подумайте об использовании SQLite. SQLite уникален в списке поддерживаемых баз данных, который не требует ни одного из двух предыдущих шагов.Он просто считывает и записывает данные в один файл в файловой системе, а версии Python с версии 2.5 поддерживают NATIVELY.
Да Я подтверждаю, что SQL LITE поддерживается NATIVELY из версии 2.5 PHYTON.
Но эта база данных работает на python 2.7 и не настроена для python 3. –
Вы можете использовать PyMySQL. Поскольку PyMySQL может импортировать как MySQLdb.
Как это:
pip install PyMySQL
добавить следовал код Сайта __init__.py
import pymysql
pymysql.install_as_MySQLdb()
Django должен использовать mysql в python, а не программист. –
@HamidFzM MySQLdb не поддерживает python3, а соединитель MySQL для Python3 не работает в Django. поэтому я думаю, что это решение. –
В настоящее время поддержка MySQL в Python3 и Джанго не так уж хорошо. Мы можем использовать разъем Mysql/Python с MySQL веб-сайта: http://dev.mysql.com/downloads/connector/python/
Мы бы лучше скачать независимо от платформы версии и установить их вручную:
tar xvf mysql-connector-python-1.1.6.tar.gz
cd mysql-connector-python-1.1.6
sudo python3 setup.py install
И для того, чтобы работать в базе данных MySQL, мы следует изменить настройку базы данных Джанго части это так:
DATABASES = {
'default': {
'NAME': 'user_data',
'ENGINE': 'mysql.connector.django',
'USER': 'mysql_user',
'PASSWORD': 'password',
'OPTIONS': {
'autocommit': True,
},
}
}
Внимание: ДВИГАТЕЛЬ часть в конфигурации должна быть «mysql.connector.django», она отличается от исходной строки «django.db.backends.mysql» ,
- 1. база данных django
- 2. setup база данных в django
- 3. База данных в рамках Django
- 4. Композитная база данных в django
- 5. Динамическая база данных для Django
- 6. Django тестовая асинхронная база данных
- 7. Django & customizing устаревшая база данных
- 8. База данных Django сама узнает
- 9. База данных Django для postgresql
- 10. База данных первых моделей Django
- 11. Динамическая база данных Django динамически
- 12. Сфокусированная база данных django save
- 13. Django База данных запросов разницы
- 14. База данных Django заполняется неправильно
- 15. база данных django для большого сравнения данных
- 16. Обновление, когда база данных изменилась в Django
- 17. База данных Django висела в процессе миграции
- 18. база данных обновлений с формой в django
- 19. Python3 не видит Django
- 20. Проверка подлинности django-python3-ldap
- 21. База данных блоков Django не снесена?
- 22. Первичный ключ Модель Django - База данных PSQL
- 23. База данных тестов Django не авто-промывка
- 24. django-pyodbc и распространяющаяся база данных
- 25. База данных и класс дизайна Django
- 26. Единая база данных с несколькими экземплярами Django
- 27. django postgres База данных psycopg2 не найдена
- 28. Django Migrations заявляет, что база данных недоступна
- 29. Django + Sqlite: база данных не будет заблокирован
- 30. Еженедельно заполняющая база данных с администратором django
Нет необходимости в файле .htaccess. База данных sqlite3 ни в коем случае не является «более безопасной», чем MySQL. – dschulz
@dschulz Почему? sqlite db не получает ни одного имени пользователя и пароля, и если кто-то найдет его местоположение, он может скачать его легко! –
Но нет абсолютно никакой необходимости размещать файл базы данных в экспортированном каталоге. – dschulz