为Django Web应用程序选择正确的数据库系统

时间:2011-12-31 03:36:47

标签: python database django

我目前正处于构建简单Django Web应用程序(用于学习建议)的计划阶段。基本上,教师可以登录,输入学生成绩,然后学生可以登录并查看他们的成绩。每个班级都有一个组号。

以下是用户的模板:

Username: Johny098
Password: Y98uj*?877!(
Name: John Doe
Gender: Male
Group: 32
Secondary: 5

考虑到我一般从django和web开发开始,我发现混淆了我可用的数据库系统的数量:MySQL,CouchDB,MongoDB,SQLite等。我很难决定哪个数据库系统用于我的目的(我以前没有数据库经验)。

经过一番研究后,我发现Couchdb(和SQLite)看起来相当简单,使用起来很有趣,但那只是我,这就是我需要帮助的原因。我知道有很多关于SQL vs NoSQL的争论,但我真的不知道这是否会对我使用数据库产生影响。理想情况下,数据库系统应该与django很好地集成,并且很容易在几天内完成。

所以,回到这个问题:我应该为我的网络应用程序使用什么数据库系统?

任何资源也将受到赞赏。

谢谢,

-Raphael

3 个答案:

答案 0 :(得分:5)

出于学习目的,我建议使用SQLite:没有设置,没有运行后台守护程序,所有内容都与Python捆绑在一起,它是SQL(所以它与Django ORM很好地映射),而且它是一个非常简单的DBMS。事实上,有些人使用SQLite进行原型设计,然后在生产中切换到MySQL / PostgreSQL。

至于NoSQL,除非你确切知道为什么以及你需要它的目的,否则我不建议使用它。

哦,最后一件事:存储密码哈希值(md5或sha1),而不是原始密码。在您的情况下,这不是必需的,但在实际应用中它是强制性的。

答案 1 :(得分:2)

Django网站的页面为lists the database backends supported。但是,无论您使用哪个数据库后端,Django的数据库访问层的工作方式都或多或少相同。我链接的页面上描述了一些差异,但如果您只编写一个基本的Web应用程序,它们不应该在正常使用中出现。因此,就您编写网络应用程序的方式而言,在列出的选项中确实无关紧要

请注意,我相信Django支持的所有数据库后端都是基于SQL的。通过Django访问数据库确实消除了我认为促使NoSQL运动的一些安全问题......无论如何,NoSQL是你现在几乎可以忽略的东西。

在您的情况下,我建议选择 SQLite ,因为它更容易设置,并且您不想花时间担心在您应该担心的时候如何配置数据库如何构建您的Web应用程序。 SQLite与大多数其他DBMS(数据库管理系统)之间的区别在于SQLite将每个数据库存储在常规文件中,而SQLite客户端直接使用该文件。其他DBMS(如MySQL,PostgreSQL,Oracle等)具有数据库的中心位置,管理它们的服务器以及连接到服务器并处理所有数据库访问的客户端。基于服务器的DBMS适用于繁忙的Web应用程序,因为它具有处理对数据库的许多同时请求的功能,但由于您只是将其用作学习项目,因此您不需要这些功能。

答案 2 :(得分:0)

我会选择MySQL ......为什么?因为在你命名的那些中,它是最受欢迎的,并且更好的是,它会在寻找工作时给你更多的功劳(例如,你可以去怪物点com并找到有多少刺戳需要你知道MySQL vs多少SQL-Lite)。

此外,MySQL简单易学,有许多GUI客户端(其中一些是开源的),并且它有很好的文档。