使用Python在MySQL数据库中存储信息

时间:2010-07-31 03:18:06

标签: python mysql

我正在开展一个庞大的项目。我一直在研究它一段时间,并决定在软件处理数据的方式上“提升”安全性。我已经知道如何使用DES加密来加密和解密数据字符串,但我不确定的是放置加密数据的位置。我想将所有内容存储在MySQL数据库中,但还没有弄清楚如何使用数据库。我做了一些谷歌搜索,但没有取得胜利。

我需要为每个帐户存储以下内容:

用户名
密码
秒。问题
秒。答
电子邮件
关键字列表
网址列表

我认为存储这些信息就像在数据库中创建表格一样,但我不确定。也许是用户的表,然后更多的表用于表中的其余用户?我不知道如何使用Python的MySQL数据库,所以任何帮助将不胜感激。

对于晚期编辑感到抱歉,我才意识到我需要清理一下。

2 个答案:

答案 0 :(得分:2)

以下是架构的示例:

user
    user_id (PK)
    username (char)
    password (char)
    security_question_id (FK)
    security_answer (char)
    email_address (char)

security_question
    security_question_id (PK)
    question (char)

keyword
    keyword_id (PK)
    keyword (char)

user_keyword
    user_keyword_id (PK)
    user_id (FK)
    keyword_id (FK)

url
    url_id (PK)
    user_id (FK)
    url (char)

PK = Primary Key
FK = Foreign Key
char = varchar of some max length that you define

假设:

  • 有一个安全问题的标准清单可供选择。
  • 很多用户可能拥有相同的关键字,因此将它们放在自己的表中。
  • 网址更加独特,因此只需将网址和user_id存储在一起即可。如果需要,可以将其更改为关键字使用的共享模式。
  • 没有什么是可以为空的,所有字段都是必需的。

正如我评论的那样,我建议使用密码(使用盐)。无需可恢复,他们可以重置密码。我过去曾模仿过Django的密码风格:

sha1$8ac10f$a94a8fe5ccb19ba61c4c0873d391e987982fbbd3

那是:哈希方法,盐和密码哈希,由$字符分隔。你可以只生成一个随机字符串作为salt。在散列之前将其添加到密码。存储密码字段中显示的字符串。要测试密码的正确性,请提取这3个字段,将salt附加到用户输入的密码,应用散列并与数据库中的散列(第3个字段)进行比较。如果匹配,则密码正确。

我个人会使用SQLAlchemy。

答案 1 :(得分:0)

您有两种选择,主要是:

一般来说,你知道如何制作一张桌子吗?

对于mysql,您可以通过登录,创建数据库,选择(使用)该数据库来创建示例数据库,然后

create table account(
   username varchar(32),
   password varchar(128),
   sec_question varchar(512),
   sec_answer varchar(128),
   email_address varchar(128)
   );

列表或URL和关键字最好作为单独的表格完成,尽管描述的内容超出了本答案的范围!

请注意,这不是一个全面或最好的方式来做你的表,而不是你可能用ORM创建它的方式,但只是一个例子。

要创建一个安全可靠的密码系统,您需要对此进行大量研究。我相信这里的人会很乐意帮助你理解哈希等等。

这是使用MySQLdb模块的l ink to a good article