flaskでpostメソッドを実施すると外部キー制約周りでエラーが発生する
flaskでAPIを作成しており、POSTメソッドを実装してみたところ、下記のようなエラーが発生しましたが、解決できず困っています。
- エラー内容
sqlalchemy.exc.IntegrityError: (_mysql_exceptions.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`mydb`.`page`, CONSTRAINT `page_ibfk_1` FOREIGN KEY (`belong_id`) REFERENCES `belong` (`id`))') [SQL: 'INSERT INTO page (id, title, belong_id, created_at, updated_at) VALUES (%s, %s, %s, %s, %s)'] [parameters: (0, 'test', '', datetime.datetime(2019, 1, 2, 6, 16, 56, 752822), datetime.datetime(2019, 1, 2, 6, 16, 56, 752822))] (Background on this error at: http://sqlalche.me/e/gkpj) 127.0.0.1 - - [02/Jan/2019 06:16:56] "POST /pages?title=test HTTP/1.1" 500 -
- flask POSTメソッド実装部分
@app.route('/pages',methods=['POST'])
def post_page():
title = request.args.get('title','')
belong_id = request.args.get('belong_id','')
page_repository = PageRepository(access_point)
page = page_repository.post(title,belong_id)
- 実行内容
curl -X POST -H "Content-Type: application/json" http://0.0.0.0:8080/pages?belong_id=1&title=test
- o/rマッパー部分抜粋
class Relation(Base):
__tablename__ = 'relation'
id = Column('id', Integer, primary_key=True)
code_link = Column('code_link', Text)
memo = Column('memo', Text)
class Belong(Base):
__tablename__ = 'belong'
id = Column('id', Integer, primary_key=True)
relation_order = Column('relation_order', Integer, ForeignKey('relation.id', onupdate="CASCASE", ondelete="CASCASE"))
page = relationship('Page')
Base.metadata.create_all(engine)
class Page(Base):
__tablename__ = 'page'
id = Column('id', Integer, primary_key=True)
title = Column('title', String(200))
belong_id = Column('belong_id', Integer, ForeignKey('belong.id', onupdate="CASCASE", ondelete="CASCASE"))
created_at = Column(DateTime)
updated_at = Column(DateTime)
relationテーブル、belongテーブルにはそれぞれ1レコード(id=1)データがそれぞれ既に入っています。
また、最初に入れていたデータがおかしいのかと思い、一度テーブルを削除、作り直しをしてデータを入れ直してもみましたが、同じエラーが発生しています。
恐れ入りますが何かご教授いただけますと幸いです。
よろしくお願いいたします。