Bonjour,

Dans mon appli, je veux enregistrer des données directement au format Json sous postgres.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
-- REM INSERT 14
CREATE TABLE LOGWATCHFILE(
    id serial not null primary key,
    logwatch json
);
je crée la table ok, et teste l'insertion d'un donnée -> ok

sous Flask avec Flask-sqlcodegen je génère ma classe dites model.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
class Logwatchfile(db.Model):
    __tablename__ = 'logwatchfile'
 
    id = db.Column(db.Integer, primary_key=True, server_default=db.FetchedValue())
    logwatch = db.Column(db.JSON)
Jusqu'a là rien de transcendent .

Je crée mon formulaire qui doit envoyer du JSON -> ok et j'écris le code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
@documents.route('/documents/watch', methods=['POST'])
def documentWatch():
    if request.method=='POST':
        '''modify process watch'''
        data = request.get_json()
        print(data)
        logwatchfile = Logwatchfile(data)
        #db.session.add(logwatchfile)
        #db.session.commit()
        return json.dumps({'status':'OK','watchFile':'run'});
    else:
        return json.dumps({'status':'KO','watchFile':'error'});
Mais même avant l'insertion quand je peuple l'objet je me fais insulter ?? et la je sèche, j'avoue que je ne comprends pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
    reraise(exc_type, exc_value, tb)
  File "/home/olivier/projets/promanpro/promanpro/server/venv/lib/python3.4/site-packages/flask/_compat.py", line 33, in reraise
    raise value
  File "/home/olivier/projets/promanpro/promanpro/server/venv/lib/python3.4/site-packages/flask/app.py", line 1639, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/olivier/projets/promanpro/promanpro/server/venv/lib/python3.4/site-packages/flask/app.py", line 1625, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/olivier/projets/promanpro/promanpro/server/documents/views.py", line 19, in documentWatch
    logwatchfile = Logwatchfile(2,data)
TypeError: __init__() takes 1 positional argument but 3 were given
J'utilise Flask-SQLAlchemy et Flask en version 0.11

J'ai cherché pas mal d'exemple sous notre ami Goo.. mais je n'ai pas trouvé mon problème.
Cela parait si simple ?

Si une bonne âme passe par là ou ici

PS : Niveau débutant sous python ... aie !

Olivier