2013-02-20 38 views
1
import sys 
import hashlib 
import getpass 
from passlib.hash import sha256_crypt 
import MySQLdb, random, os 


def SQLAddPass(username, password): 
    SQL = 'insert into user values ("%s", "%s")' % (username, password) 

    try: 
     db = MySQLdb.connect (host='localhost', user='root', db='vedio') 
     c = db.cursor() 
     c.execute(SQL) 
     db.commit() 
     c.close() 
     db.close() 
     raw_input('Record Added - press enter to continue: ') 
    except: 
     print 'There was a problem adding the record' 
     raw_input ('press enter to continue') 


def main(argv): 


    print '\nUser & Password Storage Program v.01\n' 


    username = raw_input('Please Enter a User Name: ') 
    password = sha256_crypt.encrypt(getpass.getpass('Please Enter a Password: ')) 

    try: 
     SQLAddPass(username, password) 

    except: 
     sys.exit('There was a problem saving Record!') 

    print '\nPassword safely stored in ' + sys.argv[1] + '\n'  

if __name__ == "__main__": 
    main(sys.argv[1:]) 

我的问题是,脚本工作,但有以下错误 **存储加密的密码在python到mysql

(C:\用户\杜\桌面\ example.py:14 :警告:数据截断 列 'passwo RD' 在行1 c.execute(SQL)记录添加 - 按 回车键继续:

**

密码安全地存储在数据库中。我在做什么错误的任何想法或代码的变化,欢迎)

+0

您有一个有趣的例外策略。你正在处理一个例外两次。别。 – matiit 2013-02-20 09:10:40

回答

0

可能你的'密码'字段太短。 你需要一个varchar(64)。你的密码字段长度是多少?

+0

朱利安我曾使用15,但增加了按建议和它的作品像一个魅力 – Herb21 2013-02-21 16:36:14

+0

@丹尼尔感谢它的工作可以请你帮助与代码来读取和验证存储的密码到目前为止我已经拿出这个pass_try x = 3 用户名的raw_input =( '请输入用户名:') 而pass_try Herb21 2013-02-21 18:38:25

1

数据被截断列“passwo RD”在行1

意味着你的表中有例如10和要插入的记录长度的密码列假设20.记录你插入的将被截断。密码将被破坏。

增加表中列的长度