[PYTHON] Flask-How, mit dem SQL Alchemy externe Schlüsselbeschränkungen einhält

Ich habe nach einer Möglichkeit gesucht, einen Fehler zu erhalten, wenn ich gegen eine externe Schlüsselbeschränkung verstoßen habe. Schlussfolgerung: (nicht gefunden). Auf der Codeseite aufgeben und schützen.

Überprüfungsmethode

Umgebung

Python 3.7  Flask-SQLAlchemy v2.4.1

Erstellen Sie zwei Tabellen.

Model.py


from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)

class Person(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), nullable=False)
    addresses = db.relationship('Address', backref='person', lazy=True)


class Address(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(120), nullable=False)
    person_id = db.Column(db.Integer, db.ForeignKey('person.id'),
                                nullable=False)

https://flask-sqlalchemy.palletsprojects.com/en/2.x/quickstart/ Von https://flask-sqlalchemy.palletsprojects.com/en/2.x/models/

Der fertige Tisch

test.db


CREATE TABLE "person" (
	"id"	INTEGER NOT NULL,
	"name"	VARCHAR(50) NOT NULL,
	PRIMARY KEY("id")
);

CREATE TABLE "address" (
	"id"	INTEGER NOT NULL,
	"email"	VARCHAR(120) NOT NULL,
	"person_id"	INTEGER NOT NULL,
	PRIMARY KEY("id"),
	FOREIGN KEY("person_id") REFERENCES "person"("id")
);

Mach einen Test

test.py


import unittest

def testForeignKey(self):
    db.create_all()
    db.session.add(db.Address(id=0, email="aaa", person_id="bbb"))
    db.session.commit()
    
    
if __name__ == '__main__':
    unittest.main()

Überprüfen Sie in test.db, ob ein neuer Datensatz hinzugefügt wurde.

Wenn jemand weiß, wie er einen Fehler erhalten kann, ohne den Test zu ändern, lassen Sie es mich bitte wissen.

Recommended Posts

Flask-How, mit dem SQL Alchemy externe Schlüsselbeschränkungen einhält
Schreiben Sie externe Schlüsseleinschränkungen in Django