我正在使用Python 3.2
&编写网络应用程序Django 1.6
。我需要一个安全的数据库,但Django
不支持python 3上的mysql
所以我唯一的选择是sqlite
。无论如何,我使用.htaacess
保护这种数据库,或者我可以尝试其他类型的数据库?
答案 0 :(得分:2)
您的敏感数据:django脚本,数据库,日志......应始终位于根网络文件夹之外,因此无法从网络访问。使用.htaccess
并不是解决安全问题的好方法。
如果你真的需要这个,那么制定一个目录规则以禁止在apache站点配置中包含sqlite数据库的文件夹,或者将包含以下内容的.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
的{{1}}指向DocumentRoot
,以便所有其他文件夹都无法从外部使用。
答案 1 :(得分:1)
您可以使用PyMySQL。因为PyMySQL可以作为MySQLdb导入。
像这样:
pip install PyMySQL
添加,然后将代码添加到网站的__init__.py
import pymysql
pymysql.install_as_MySQLdb()
答案 2 :(得分:0)
Django支持4个数据库引擎:
在大多数情况下,这里列出的所有引擎都与核心Django框架一样工作(应该引发一个值得注意的例外,以支持可选的GIS Django,它比其他PostgreSQL数据库更强大)。如果您不依赖于特定的遗留系统并且可以自由选择任何数据库后端,我们建议使用PostgreSQL,它基于成本,功能,速度和稳定性之间的平衡。
数据库的设置是一个分两个阶段进行的过程:
首先,您必须安装和配置数据库服务器本身。此过程超出了本书的范围,但此处列出的四个数据库中的每个数据库都在其网站上提供了大量文档。 (如果您在共享主机上,您的提供商很可能已经为您设置了所有这些)。 其次,您需要为特定的数据库后端安装Python库。这是通过允许Python与数据库交互的第三方代码完成的。
如果您只是在玩Django并且不想安装数据库服务器,请考虑使用SQLite。 SQLite在受支持的数据库列表中是唯一的,不需要前两个步骤中的任何一个。它只是读取和写入文件系统上的单个文件,而2.5版本的Python版本支持NATIVELY。
是的我确认了2.5版PHYTON支持NATIVELY的SQL LITE。
答案 3 :(得分:0)
目前,python3和django中mysql的支持并不是那么好。我们可以使用mysql网站上的Mysql连接器/ Python: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,
},
}
}
注意:配置中的ENGINE部分应为'mysql.connector.django',它与原始字符串'django.db.backends.mysql'不同。