IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Flask et MySQL problème de communication (débutant) [Python 2.X]


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 172
    Par défaut Flask et MySQL problème de communication (débutant)
    Bonjour,

    J'essaie de connecter Flask et MySQL, mais je ne récupère pas le status "success" de la création d'utilisateur....Je fais mes test avec POSTMAN, je reçois l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"message": "The method is not allowed for the requested URL."}
    Je ne comprends pas de quelle "method" il parle, du POST ????....

    Voici le code de "api.py":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    from flask import Flask
    from flask_restful import Resource, Api, reqparse
    from flaskext.mysql import MySQL
     
    app = Flask(__name__)
    api = Api(app)
     
    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']
     
                return {'Email': args['email'], 'Password': args['password']}
     
                mysql = MySQL()
                # MySQL configurations
                app.config['MYSQL_DATABASE_USER'] = 'root'
                app.config['MYSQL_DATABASE_DB'] = 'itemlistdb'
                app.config['MYSQL_DATABASE_HOST'] = 'localhost'
     
                mysql.init_app(app)
     
                conn = mysql.connect()
     
                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')
     
    if __name__ == '__main__':
        app.run(debug=True)
    J'utilise une procédure stockée pour écrire dans la DB, procédure "spCreateUser", voici son code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    BEGIN
     
    if ( select exists (select 1 from tblUser where UserName = p_username) ) THEN
     
        select 'Username Exists !!';
     
    ELSE
     
    insert into tblUser
    (
        UserName,
        Password
    )
    values
    (
        p_Username,
        p_Password
    );
     
    END IF;
     
    END
    Merci d'avance !

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 172
    Par défaut
    Bon bah j'ai trouvé tout seul,

    Du coup je mets le détail ça pourrait servir a d'autres qui débutent comme moi....

    Alors premièrement pour la fonction de post, il faut l'appeler "post" et non "Post"....

    Une fois cela fait, j'avais le message d'erreur suivant :

    "A setup function was called after the first request was handled"

    Pour résoudre ce problème il suffit de mettre le debug mode en False....

    Voici le code qui marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    from flask import Flask
    from flask_restful import Resource, Api, reqparse
    from flaskext.mysql import MySQL
     
    app = Flask(__name__)
    api = Api(app)
     
    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']
     
                #return {'Email': args['email'], 'Password': args['password']}
     
                mysql = MySQL()
                # MySQL configurations
                app.config['MYSQL_DATABASE_USER'] = 'root'
                app.config['MYSQL_DATABASE_DB'] = 'itemlistdb'
                app.config['MYSQL_DATABASE_HOST'] = 'localhost'
     
                mysql.init_app(app)
     
                conn = mysql.connect()
     
                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'}
                   cursor.close()
                   conn.close() 
                else:
                   return {'StatusCode':'1000','Message': str(data[0])}
                   cursor.close()
                   conn.close()
     
            except Exception as e:
                return {'error': str(e)}
     
    api.add_resource(CreateUser, '/CreateUser')
     
    if __name__ == '__main__':
        app.run(debug=False)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Php/mysql problème débutant !
    Par hazaki dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 30/12/2011, 10h22
  2. [MySQL] Php/mysql problème débutant !
    Par hazaki dans le forum PHP & Base de données
    Réponses: 20
    Dernier message: 26/12/2011, 17h01
  3. Réponses: 6
    Dernier message: 11/04/2007, 16h42
  4. [WinService][C#] Problème de communication
    Par Pfeffer dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/07/2005, 15h54
  5. [EJB2.1 Entity] [CMP] [MySQL] Problème avec clé primaire en auto increment
    Par tery dans le forum Java EE
    Réponses: 6
    Dernier message: 16/07/2004, 11h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo