Ok Flaskとsqlalchemyに基づく安らかなAPIアプリケーションを使用して既存のmysqlデータベーステーブルに新しい行を挿入しようとしています。私はそれが着信http POST要求から値を取得し、POST要求から受け取った値で指定されたデータベースの "オブジェクト"テーブルに新しい行を作成します。フラスコとsqlalchemyを使用して既存のmysqlデータベーステーブルに挿入する方法
注:アプリはのhttpd ApacheサーバでWSGIのセットアップを経由して実行されている(セントOS 6.6)
意図したように安らかなAPIの一部が動作しますが、私はSQLAlchemyの部分の周りに私の頭を取得するように見えることはできません。私は初心者のための明確な具体的な助言が必要です。
以下のサンプルコードは、(8、このサンプルコードでのみ2、実際に私の実際のコードで8つのparamsはある)読み出し線30にエラーが発生します。
「はTypeError:INIT()がかかり正確に1つの議論(与えられた8) "
私が間違っていることを確信していません...申し訳ありませんコードは長いです、あなたはスクロールする必要があります。
#! 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()
ご協力いただければ幸いです!
行48行である
私はこのからライン30を変えましたか?このスニペットには48行はありません。 – Plasma私はあなたがオブジェクトを作成する方法がそれと関係があると感じています。行 'r_object_row = Object(..、..)'を見てください。私はどこにでもテーブルのスキーマを定義しているとは思わない。スキーマがなければ、データを入れようとしているときにORMが叫んでいるのがわかります。 – Vasif
デバッグのヘルプを求めるときは、完全なトレースバックを含めてください。 –