2016-08-20 88 views
0
from flask import Flask 
from flask_restful import Resource, Api 
from flask_restful import reqparse 
from flask_mysqldb import MySQL 



mysql = MySQL() 
app = Flask(__name__) 

# MySQL configurations 
app.config['MYSQL_USER'] = 'root' 
app.config['MYSQL_PASSWORD'] = '' 
app.config['MYSQL_DB'] = 'itemlistdb' 
app.config['MYSQL_HOST'] = 'localhost' 




    mysql.init_app(app) 

    api = Api(app) 

    class AuthenticateUser(Resource): 
     def post(self): 
      try: 
       # Parse the arguments 

       parser = reqparse.RequestParser() 
       parser.add_argument('email', type=str, help='Email address for Authentication') 
       parser.add_argument('password', type=str, help='Password for Authentication') 
       args = parser.parse_args() 

       _userEmail = args['email'] 
       _userPassword = args['password'] 

       conn = mysql.connection 
       cursor = conn.cursor() 
       cursor.callproc('sp_AuthenticateUser',(_userEmail,)) 
       data = cursor.fetchall() 


       if(len(data)>0): 
        if(str(data[0][2])==_userPassword): 
         return {'status':200,'UserId':str(data[0][0])} 
        else: 
         return {'status':100,'message':'Authentication failure'} 

      except Exception as e: 
       return {'error': str(e)} 


    class GetAllItems(Resource): 
     def post(self): 
      try: 
       # Parse the arguments 
       parser = reqparse.RequestParser() 
       parser.add_argument('id', type=str) 
       args = parser.parse_args() 

       _userId = args['id'] 

       conn = mysql.connection 
       cursor = conn.cursor() 
       cursor.callproc('sp_GetAllItems',(_userId,)) 
       data = cursor.fetchall() 

       items_list=[]; 
       for item in data: 
        i = { 
         'Id':item[0], 
         'Item':item[1] 
        } 
        items_list.append(i) 

       return {'StatusCode':'200','Items':items_list} 

      except Exception as e: 
       return {'error': str(e)} 

    class AddItem(Resource): 
     def post(self): 
      try: 
       # Parse the arguments 
       parser = reqparse.RequestParser() 
       parser.add_argument('id', type=str) 
       parser.add_argument('item', type=str) 
       args = parser.parse_args() 

       _userId = args['id'] 
       _item = args['item'] 

       print _userId; 

       conn = mysql.connection 
       cursor = conn.cursor() 
       cursor.callproc('sp_AddItems',(_userId,_item)) 
       data = cursor.fetchall() 

       conn.commit() 
       return {'StatusCode':'200','Message': 'Success'} 

      except Exception as e: 
       return {'error': str(e)} 



    class CreateUser(Resource): 
     def post(self): 
      try: 
       # Parse the arguments 
       parser = reqparse.RequestParser() 
       parser.add_argument('email', type=str, help='Email address to create user') 
       parser.add_argument('password', type=str, help='Password to create user') 
       args = parser.parse_args() 

       _userEmail = args['email'] 
       _userPassword = args['password'] 

       conn = mysql.connection 
       cursor = conn.cursor() 
       cursor.callproc('spCreateUser',(_userEmail,_userPassword)) 
       data = cursor.fetchall() 

       if len(data) is 0: 
        conn.commit() 
        return {'StatusCode':'200','Message': 'User creation success'} 
       else: 
        return {'StatusCode':'1000','Message': str(data[0])} 

      except Exception as e: 
       return {'error': str(e)} 



    api.add_resource(CreateUser, '/CreateUser') 
    api.add_resource(AuthenticateUser, '/AuthenticateUser') 
    api.add_resource(AddItem, '/AddItem') 
    api.add_resource(GetAllItems, '/GetAllItems') 

    if __name__ == '__main__': 
     app.run(debug=True) 

它引發錯誤「連接對象不可調用」。 我已經在@stackoverflow中查找過所有可能的問題,但無法找到相同的解決方案..如果有人有解決方案,請幫助我。 謝謝。TypeError:'連接'對象在Python中使用mysqldb無法調用

注:現在這個代碼工作...謝謝你

+0

請注意發送*完整回溯*,包括異常的名稱到問題本身。 –

+0

即你的問題非常特別的是你捕捉到你不準備處理的異常,但是你也失去了原始格式,並且正在返回'str(e)';在您仍然在調試的情況下,您應該在這種情況下將'traceback.print_exc()'添加到您的異常處理程序中。 –

+0

@AnttiHaapala你可以請你編輯與你的代碼..我很開始在這個。 –

回答

4

更換

conn = mysql.connect() 
cursor = conn.cursor() 

conn = mysql.connection 
cursor = conn.cursor() 

閱讀更多砂箱MySQLdb的的docs

+0

現在它發現一個錯誤... { 「錯誤」:「全局名稱遊標未定義」 } –

+0

@TanmoySarkar你必須使用'cursor ='而不是'conn =' –

+0

現在它拋出.. 。{ 「error」:「全局名稱conn'未定義」 } ....... –

相關問題