Ok Ich versuche, eine neue Zeile in eine vorhandene MySQL-Datenbanktabelle mit einer erholsamen API-Anwendung basierend auf Flask und Sqlalchemy einfügen. Ich möchte, dass es die Werte von der eingehenden HTTP-POST-Anfrage übernimmt und dann eine neue Zeile in der "Objekt" -Tabelle der gegebenen Datenbank mit den Werten erzeugt, die von der POST-Anfrage empfangen werden.Wie Einfügen in eine vorhandene MySQL-Datenbank-Tabelle mit Kolben und Sqlalchemy
Hinweis: Die App ist über eine wsgi Setup mit httpd Apache-Server (cent os 6.6) läuft
Der RESTful API Teil wie beabsichtigt funktioniert, aber ich kann meinen Kopf nicht scheinen um den sqlalchemy Teil zu bekommen. Ich brauche einen klaren Rat für einen Anfänger.
Das folgende Codebeispiel verursacht einen Fehler auf der Leitung 30, die lautet (die 8 ist eigentlich die 8 params in meinem eigentlichen Code, nur 2 in diesem Beispielcode):
„Typeerror: init() nimmt genau 1 Argument (8 gegeben) "
Nicht sicher, was ich falsch mache ... Sorry Code ist lang, Sie müssen scrollen.
#! usr/bin/python
from flask import Flask, jsonify, request
from flask_restful import reqparse, abort, Resource, Api
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, Text, DateTime, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, backref, scoped_session, sessionmaker
app = Flask(__name__)
api = Api(app)
engine = create_engine('mysql+pymysql://user_name:[email protected]:3306/database', echo=True)
Base = declarative_base()
metadata = MetaData()
Base.metadata.reflect(engine)
class Object(Base):
__table__ = Table('object', metadata, autoload = True, autoload_with=engine)
class submitObject(Resource):
def post(self):
request_data = request.get_json(force=True)
r_object_id = request_data['object_id']
r_object_name = request_data['object_name']
r_object_json = jsonify(object_id=r_object_id, object_name=r_object_name)
r_object_row = Object(r_object_id, r_object_name)
db_session = scoped_session(sessionmaker(bind=engine))
db_session.add(r_object_row)
db_session.commit()
db_session.remove()
return r_ticket_json
api.add_resource(submitObject, '/object/submit')
if __name__ == "__main__":
app.debug = True
app.run()
Jede Hilfe wird sehr geschätzt!
Welche Linie ist die Linie 48? Dieses Snippet enthält keine 48 Zeilen. – Plasma
Ich fühle, dass die Art, wie du ein Objekt erstellst, etwas damit zu tun hat. Betrachte die Zeile 'r_object_row = Object (.., ..)'. Ich sehe nicht, dass Sie irgendwo ein Schema für die Tabelle definiert haben. Ohne Schema sehe ich das ORM schreien, wenn Sie versuchen, Daten hinein zu legen. – Vasif
Bitte geben Sie den vollständigen Traceback an, wenn Sie nach Hilfe zum Debuggen gefragt werden. –