2016-11-17 95 views
0

所以我遵循這個tutorial,我到達步連接的Python到MySQL後,我得到了200響應代碼,但郵遞員我看到這一點: { 「錯誤」: 「%d格式:一個數字是必需的,而不是str」 }得到了響應200,但沒有發生(瓶MySQL的)

然後我檢查我的表在MySQL上,什麼也沒有發生,它仍然是空的。請幫幫我。

這裏是代碼:

from flask import Flask 
from flask_restful import Resource, Api, reqparse 
from flaskext.mysql import MySQL 

mysql = MySQL() 
app = Flask(__name__) 

app.config['MYSQL_DATABASE_USER'] = 'root' 
app.config['MYSQL_DATABASE_PASSWORD'] = 'root' 
app.config['MYSQL_DATABASE_HOST'] = 'localhost' 
app.config['MYSQL_DATABASE_PORT'] = '5002' 
app.config['MYSQL_DATABASE_DB'] = 'itemlistdb' 

mysql.init_app(app) 

api = Api(app) 

class CreateUser(Resource): 
    def post(self): 
     try: 
      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() 

      p_Username = args['email'] 
      p_Password = args['password'] 

      conn = mysql.connect() 
      cursor = mysql.get_db().cursor() 
      cursor.callproc('spCreateuser',(p_Username,p_Password)) 
      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)} 

class AuthenticateUser(Resource): 
    def post(self): 
     try: 
      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() 

      p_Username = args['email'] 
      p_Password = args['password'] 

      conn = mysql.connect() 
      cursor = conn.cursor() 
      cursor.callproc('sp_AuthenticateUser',(p_Username,)) 
      data = cursor.fetchall() 

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

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


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

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

Screenshot with the error

+0

感謝提醒我 – snow

回答

0

我懷疑,這個問題不是創建用戶的呼叫,但應用程序連接本身。

具體來說,我想知道這一點:

app.config['MYSQL_DATABASE_PORT'] = '5002' 

服務器端口號通常是整數(這不是一個Python的東西,它是一個建築標準),所以當MySQL試圖連接時,它可能做的是這樣的:

'<rest-of-the-connection:%d' % app.config['MYSQL_DATABASE_PORT'] 

在這種情況下,雖然app.config['MYSQL_DATABASE_PORT']是一個海峽,而不是一個int。

嘗試

app.config['MYSQL_DATABASE_PORT'] = 5002 
+0

感謝,它的工作原理 – snow