2013-02-20 45 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.記錄你插入的將被截斷。密碼將被破壞。

增加表中列的長度