2013-12-12 26 views
0

我正在使用Python 3.2 & Django 1.6正在編寫Web應用程序。我需要一個安全的數據庫,但Django不支持python 3上的mysql,所以我唯一的選擇是sqlite。無論如何,我使用.htaacess來保護這種數據庫,或者我可以嘗試其他類型的數據庫?Python3中的Django數據庫

+0

不需要.htaccess文件。 sqlite3數據庫絕不是「比MySQL更安全」的數據庫。 – dschulz

+0

@dschulz爲什麼? sqlite數據庫沒有得到任何用戶名和密碼,如果有人發現它的位置,他可以輕鬆下載! –

+1

但絕對不需要將數據庫文件放置在導出的目錄下。 – dschulz

回答

2

敏感數據:Django的腳本,數據庫,日誌,......應始終是根Web文件夾外面所以從網上沒有可能的訪問。使用.htaccess不是解決安全問題的好方法。

如果真的需要這個,然後做一個目錄規則禁止含有SQLite數據庫的文件夾在Apache的網站配置或添加.htaccess文件包含以下內容,你有你的SQLite數據庫的文件夾:

deny from all 

應該這樣做。但同樣,上述方案是不是一個好的做法,你應該配置你的Web服務器,以便Web根處於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.comDocumentRoot指向[...]/project root/project name/public/,以便所有其他文件夾不可從外部獲得。

+0

你能解釋一下你的建議嗎? –

+0

我詳細解答了我的答案。詢問是否需要更多細節;) – achedeuzot

0

Django的支撐件4 TIPE數據庫引擎的:

大多數情況下,這裏列出的所有引擎的工作方式與我們一樣與核心的Django框架(應該提出一個值得注意的例外來支持可選的GIS Django,它比其他PostgreSQL數據庫強大得多)。如果您沒有綁定到特定的遺留系統並且可以自由選擇任何數據庫後端,我們推薦使用PostgreSQL,它基於成本,功能,速度和穩定性之間的平衡。

數據庫的設置是一個過程,需要分兩個階段進行:

首先,您必須安裝和配置數據庫服務器本身。這個過程超出了本書的範圍,但是這裏列出的四個數據庫中的每一個在其網站上都有大量的文檔。 (如果您在共享主機上,很可能您的提供商已經爲您設置了所有這些)。其次,您需要爲您的特定數據庫後端安裝Python庫。這是通過允許Python與數據庫交互的第三方代碼完成的。

如果您只是在玩Django並且不想安裝數據庫服務器,請考慮使用SQLite。 SQLite在受支持的數據庫列表中是獨一無二的,它不需要前兩個步驟中的任何一個。它只是將數據讀寫到文件系統上的單個文件,而2.5版本的Python版本則支持它。

是的我確認從2.5版本的PHYTON NATIVELY支持的SQL LITE。

+0

但是這些數據庫工作在python 2.7上,並沒有爲python 3配置。 –

1

您可以使用PyMySQL。因爲PyMySQL可以導入爲MySQLdb。

像這樣:

pip install PyMySQL 

添加其次代碼的網站的__init__.py

import pymysql 

pymysql.install_as_MySQLdb() 
+0

Django應該在python中使用mysql而不是程序員。 –

+0

@HamidFzM MySQLdb不支持python3,而Python3的MySQL連接器在Django中不起作用。所以我認爲這是一個解決方案。 –

0

目前,在python3和Django的的MySQL的支持並不好。我們可以使用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數據庫進行操作,我們應該改變Django的數據庫設置部分是這樣的:

DATABASES = { 
'default': { 
    'NAME': 'user_data', 
    'ENGINE': 'mysql.connector.django', 
    'USER': 'mysql_user', 
    'PASSWORD': 'password', 
    'OPTIONS': { 
     'autocommit': True, 
    }, 
    } 
} 

注意:在配置中的引擎部分應該是「mysql.connector.django」,它是從原始的字符串'django.db.backends.mysql的不同。