2016-06-15 9 views
-2

Ich möchte Datenbankwert laden? mit sql alchmey. Wenn ich frage get Mehtod '127.0.0.1/api/v1/user/25/' mitFlask CRUD mit SQLAlchemy, wie kann ich Datenspalte laden

Es gibt einen Wert in Datenbank (id = 5, username = jaeyeon, [email protected]) I möchte diese Spalte anzeigen. aber es kann nicht. Wo kann ich den Code reparieren?
Ich weiß nicht, wie Parameter liefern .. Bitte helfen Sie mir :(

from flask import Flask, url_for, redirect 
from flask_sqlalchemy import SQLAlchemy 
from flask_restful import reqparse, abort, Api, Resource 


app = Flask(__name__) 
api = Api(app) 

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:[email protected]/catchat' 
db = SQLAlchemy(app) 


class User(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    username = db.Column(db.String(80), unique=True) 
    email = db.Column(db.String(120), unique=True) 
    password = db.Column(db.String(120), unique=True) 

    def __init__(self, username, email, password): 
     self.username = username 
     self.email = email 
     self.password = password 

    def __repr__(self): 
     return '<User %r>' % self.username 
class user(Resource): 
    def get(self, id): 
     args = parser.parse_args() 
     user_id = db.session.query(User.id == args['id']).filter(id) 
     print user_id 
     entry = [dict(id=user.id, username=user.username, email=user.email, password=user.password)] 
     print entry 
     return entry, 200 
api.add_resource(user,'/api/v1/user/<int:id>') 

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

Antwort

0

Sie haben Ihre Sitzung etwas anders aufgebaut, als ich zu tun gewohnt bin, so bin ich nicht sicher, ob das macht keinen Unterschied, aber ich kann einige Probleme mit der Abfrage Sie machen Versuchen Sie stattdessen sehen.

user_id = db.session.query(User).filter_by(id = args['id']).one() 

Unter der Annahme, dass args['id'] den richtigen Wert wird produzieren, dann ist dieses kehrt die einzige passende Zeile von User , und Sie können Punktnotation verwenden, um auf die Spalten zuzugreifen.Ich sehe, dass Sie scheinen, ein bisschen weg zu sein, wenn Sie t verwenden Beachten Sie, dass die Werte jetzt in user_id gespeichert sind, so müssen Sie auf sie wie folgt zugreifen:

email = user_id.email 
+0

Vielen Dank für die Antwort meine Frage. Ich habe deinen Code ausprobiert. aber es kann nicht gibt es einen Fehler zeigte mir so { "Nachricht": "Der Browser (oder Proxy) schickte eine Anfrage, die dieser Server nicht verstehen konnte." } Dies ist mein aktualisierter Code: user_id = db.session.query (Benutzer) .filter_by (id = args ['id']) eintrag = dict (id = benutzer_id.id, benutzername = benutzer_id.username, email = user_id.email, password = user_id.password) Eintrag drucken –

+0

Hm, in diesem Fall denke ich, dass dieses Problem meines Wissens nicht bekannt ist. Es tut mir leid, dass ich nicht mehr tun kann, um zu helfen. – coralvanda

+0

Das ist in Ordnung, danke für die Antwort auf mich :) –

Verwandte Themen