2013-12-12 5 views
0

Я пишу веб-приложение, используя Python 3.2 & Django 1.6. Мне нужна безопасная база данных, но Django не поддерживает mysql на python 3, поэтому единственным выбором для меня является sqlite. Я все равно защищаю эту базу данных с помощью .htaacess или могу попробовать другие типы баз данных?База данных Django в Python3

+0

Нет необходимости в файле .htaccess. База данных sqlite3 ни в коем случае не является «более безопасной», чем MySQL. – dschulz

+0

@dschulz Почему? sqlite db не получает ни одного имени пользователя и пароля, и если кто-то найдет его местоположение, он может скачать его легко! –

+1

Но нет абсолютно никакой необходимости размещать файл базы данных в экспортированном каталоге. – dschulz

ответ

2

Ваши конфиденциальные данные: Джанго скрипты, базы данных, журналы, ... должны всегда находиться вне веб-корневой папке поэтому нет никакой возможности доступа из Интернета. Использование .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/, чтобы все остальные папки были недоступны извне.

+0

Можете ли вы объяснить свое предложение немного больше? –

+0

Я подробно изложил свой ответ. Спросите, нужна ли вам еще подробная информация;) – achedeuzot

0

поддержка Джанго 4 Тип двигателя База данных:

По большей части все перечисленные здесь двигатели работают так же, как мы ll с основной картой Django (заметное исключение должно быть поднято для поддержки необязательного GIS Django, который намного мощнее, чем с другой базой данных PostgreSQL). Если вы не привязаны к определенной унаследованной системе и имеете свободу выбора баз данных, мы рекомендуем PostgreSQL, основанную на балансе между стоимостью, функциями, скоростью и стабильностью.

Настройка базы данных представляет собой процесс, который происходит в два этапа:

Во-первых, необходимо установить и настроить сам сервер базы данных. Этот процесс выходит за рамки этой книги, но каждая из четырех перечисленных здесь баз данных имеет обширную документацию на своем веб-сайте. (Если вы используете общий хостинг, очень вероятно, что ваш провайдер уже установил все это для вас). Во-вторых, вам необходимо установить библиотеку Python для вашей конкретной базы данных. Это делается с помощью стороннего кода, который позволяет Python взаимодействовать с базой данных.

Если вы просто играете с Django и не хотите устанавливать сервер базы данных, подумайте об использовании SQLite. SQLite уникален в списке поддерживаемых баз данных, который не требует ни одного из двух предыдущих шагов.Он просто считывает и записывает данные в один файл в файловой системе, а версии Python с версии 2.5 поддерживают NATIVELY.

Да Я подтверждаю, что SQL LITE поддерживается NATIVELY из версии 2.5 PHYTON.

+0

Но эта база данных работает на python 2.7 и не настроена для python 3. –

1

Вы можете использовать PyMySQL. Поскольку PyMySQL может импортировать как MySQLdb.

Как это:

pip install PyMySQL 

добавить следовал код Сайта __init__.py

import pymysql 

pymysql.install_as_MySQLdb() 
+0

Django должен использовать mysql в python, а не программист. –

+0

@HamidFzM MySQLdb не поддерживает python3, а соединитель MySQL для Python3 не работает в Django. поэтому я думаю, что это решение. –

0

В настоящее время поддержка 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» ,

Смежные вопросы