私はSQLiteデータベースを持っています。 this answerによれば、私は持っているバージョン3.6.19+が必要です。 SQLiteのバージョン3.7.10を使用して作成しました。pysqlite2を使ってPythonでSQLiteの外部キーを強制する方法はありますか?
>>> from pysqlite2 import dbapi2 as sqlite
>>> print sqlite.sqlite_version
3.7.10
したがって、外部キーをサポートする必要があります。私は、次のsqliteのデータベースが文を作成してい
:
DROP TABLE IF EXISTS `msrun`;
-- -----------------------------------------------------
-- Table `msrun`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `msrun` (
`msrun_name` VARCHAR(40) PRIMARY KEY NOT NULL ,
`description` VARCHAR(500) NOT NULL);
DROP TABLE IF EXISTS `feature`;
-- -----------------------------------------------------
-- Table `feature`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `feature` (
`feature_id` VARCHAR(40) PRIMARY KEY NOT NULL ,
`intensity` DOUBLE NOT NULL ,
`overallquality` DOUBLE NOT NULL ,
`charge` INT NOT NULL ,
`content` VARCHAR(45) NOT NULL ,
`msrun_msrun_name` VARCHAR(40) NOT NULL ,
CONSTRAINT `fk_feature_msrun1`
FOREIGN KEY (`msrun_msrun_name`)
REFERENCES `msrun` (`msrun_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
CREATE UNIQUE INDEX `id_UNIQUE` ON `feature` (`feature_id` ASC);
CREATE INDEX `fk_feature_msrun1` ON `feature` (`msrun_msrun_name` ASC);
のでmsrun_msrun_name機能テーブルにはmsrunテーブルのmsrun_nameの外部キーです。しかし、フィーチャーテーブルを埋めるときに、msrun_msrun_nameに必要なものを記入することができます。外部キーは強制されていません。
this questionによれば、強制はオンにする必要があり、SQLAlchemyでそれを行う方法を回答しますが、SQLAlchemyを使用していません。
pysqlite2で外部キーを強制するにはどうすればよいですか?
やPythonのcursor.execute( "プラグマFOREIGN_KEYS = ON")に:例:外部キーが現在有効になっている場合
はその後に見えます –