Ich habe gerade ein Problem bei der Implementierung von Flask-SQLAlchemy in meinem Flask-Restplus. Es zeigen durchweg einen Fehler:sqlalchemy.orm.exc.UnmappedInstanceError: Klasse '__main __. Benutzer' ist nicht auf Flask-SQLAlchemy gemappt
sqlalchemy.orm.exc.UnmappedInstanceError: Class '__main__.User' is not mapped
Der Code, den ich unten geschrieben habe, ist die vereinfachte Version (1 Datei) des Flask-Restplus Beispielprojekt auf GitHub: https://github.com/postrational/rest_api_demo
Ich habe immer wieder überprüft , aber habe keine Ahnung warum der Fehler immer noch auftritt.
Hier ist mein Code:
from flask import Flask, request
from flask_sqlalchemy import SQLAlchemy
from flask_restplus import Resource, Api, fields
app = Flask(__name__)
api = Api(app, version='v0.1')
db = SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
ns = api.namespace('users', description='User API')
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(80))
password = db.Column(db.String(80))
def __init__(self, email, password):
self.email = email
self.password = password
def __repr__(self):
return '<User %s>' % self.email
user = api.model('user', {
"id": fields.Integer(readOnly=True),
"email": fields.String(required=True),
"password": fields.String(required=True),
})
def create_user(data):
email = data.get('email')
password = data.get('password')
user = User(email, password)
db.session.add(user)
db.session.commit()
def update_user(user_id, data):
user = User.query.filter(User.id == user_id).first()
user.email = data.get('email')
user.password = data.get('password')
db.session.add(user)
db.session.commit()
def delete_user(user_id):
user = User.query.filter(User.id == user_id).first()
db.session.delete(user)
db.session.commit()
@ns.route('/')
class UserList(Resource):
@ns.marshal_list_with(user)
def get(self):
users = User.query.all()
return users
@ns.marshal_with(user)
@ns.expect(user)
def post(self):
data = request.json
create_user(data)
return None, 201
@ns.route('/<int:id>')
class User(Resource):
@ns.marshal_with(user)
def get(self, id):
user = User.query.filter(User.id == id).first()
return user
@ns.expect(user)
@ns.marshal_with(user)
def put(self, id):
data = request.json
user = update_user(id, data)
return None, 204
def delete(self, id):
delete_user(id)
return None, 204
db.create_all()
user = User(email= '[email protected]', password= '4324dsfdsfa')
db.session.add(user)
db.session.commit()
user = User(email= '[email protected]', password= '5435rs')
db.session.add(user)
db.session.commit()
users = User.query.all()
print users
if __name__ == "__main__":
app.run(debug=True)
Gibt es etwas, das ich auf dem Code verpasst? Ich benutze python2.7 sowieso ..
ich einfach super auf genannt habe Mein Modell init, aber es scheint, als ob es nicht funktioniert hat. Ich habe versucht, ein neues Projekt mit neuen Modellen zu erstellen, es funktioniert. Hab keine Ahnung was hier passiert – rizkiaditya24