Bonjour,
Dans mon appli, je veux enregistrer des données directement au format Json sous postgres.
je crée la table ok, et teste l'insertion d'un donnée -> ok
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 );
sous Flask avec Flask-sqlcodegen je génère ma classe dites model.
Jusqu'a là rien de transcendent .
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)
Je crée mon formulaire qui doit envoyer du JSON -> ok et j'écris le code
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
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'});
J'utilise Flask-SQLAlchemy et Flask en version 0.11
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'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
Partager