Python 在多对多关系表中插入2个外键

Python 在多对多关系表中插入2个外键,python,sqlite,Python,Sqlite,我想在actor_movie表中插入一个条目。 模式: CREATE TABLE movies( title TEXT NOT NULL, year INTEGER, users_rating FLOAT, descrption TEXT, imdb_url TEXT PRIMARY KEY NOT NULL ); CREATE TABLE actors( id INTEGER PRIMARY KEY AUTOINCREMENT, act

我想在actor_movie表中插入一个条目。 模式:

CREATE TABLE movies(
    title TEXT NOT NULL,
    year INTEGER,
    users_rating FLOAT,
    descrption TEXT,
    imdb_url TEXT PRIMARY KEY NOT NULL
);

CREATE TABLE actors(
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    actor_name TEXT NOT NULL
);

CREATE TABLE actor_movie(
    actor_id INTEGER,
    movie_id INTEGER,
    FOREIGN KEY (actor_id) REFERENCES actors(id)
        ON UPDATE CASCADE
        ON DELETE CASCADE,
    FOREIGN KEY (movie_id) REFERENCES movies(id)
        ON UPDATE CASCADE
        ON DELETE CASCADE
);
csv中的数据库如下所示:

title,rating,year,users_rating,votes,metascore,img_url,countries,languages,actors,genre,tagline,description,directors,runtime,imdb_url
The Longest Day,G,1962.0,7.8,"51,041",75.0,"https://m.media-amazon.com/images/M/MV5BZTM1ZjQ2YTktNDM2MS00NGY2LTkzNzItZTU4ODg1ODNkMWYxL2ltYWdlXkEyXkFqcGdeQXVyNjc1NTYyMjg@._V1_UX182_CR0,0,182,268_AL__QL50.jpg",['USA'],"['English', 'German', 'French']","['Eddie Albert', 'Paul Anka', 'Arletty', 'Jean-Louis Barrault', 'Richard Beymer', 'Hans Christian Blech', 'Bourvil', 'Richard Burton', 'Wolfgang Büttner', 'Red Buttons', 'Pauline Carton', 'Sean Connery', 'Ray Danton', 'Irina Demick', 'Fred Dur']","['Action', 'Drama', 'History', 'War']",42 STARS IN THE LONGEST DAY,"The events of D-Day, told on a grand scale from both the Allied and German points of view.","['Ken Annakin', 'Andrew Marton', '3 more credits']",178 min,https://www.imdb.com/title/tt0056197/
INSERT INTO actor_movie(actor_id, movie_id)
    SELECT a.id, m.id
    FROM actors a CROSS JOIN
         movies m
    WHERE a.actor_name = ? AND
          m.title = ?;
我使用sqlite和以下命令填充movies表,这将填充movies并忽略不需要的列:

sqlite3 movies.db
> .mode csv
> .import movie.csv movies
这是我用来填充actors表的内容:

INSERT INTO actors(actor_name)
    SELECT DISTINCT actors
    FROM movies
    WHERE actor_name NOT IN (SELECT actor_name FROM actors);
我在想,类似这样的东西可能会在演员电影中插入价值观:

INSERT INTO actor_movie(actor_id, movie_id)
    SELECT id, id FROM actors, movies
    WHERE actor_name, title IN (SELECT DISTINCT actors FROM movies AND ...)

或者我可以在Python(flask)中使用sqlite3来实现这一点?

如果我理解正确,您可能会希望这样:

title,rating,year,users_rating,votes,metascore,img_url,countries,languages,actors,genre,tagline,description,directors,runtime,imdb_url
The Longest Day,G,1962.0,7.8,"51,041",75.0,"https://m.media-amazon.com/images/M/MV5BZTM1ZjQ2YTktNDM2MS00NGY2LTkzNzItZTU4ODg1ODNkMWYxL2ltYWdlXkEyXkFqcGdeQXVyNjc1NTYyMjg@._V1_UX182_CR0,0,182,268_AL__QL50.jpg",['USA'],"['English', 'German', 'French']","['Eddie Albert', 'Paul Anka', 'Arletty', 'Jean-Louis Barrault', 'Richard Beymer', 'Hans Christian Blech', 'Bourvil', 'Richard Burton', 'Wolfgang Büttner', 'Red Buttons', 'Pauline Carton', 'Sean Connery', 'Ray Danton', 'Irina Demick', 'Fred Dur']","['Action', 'Drama', 'History', 'War']",42 STARS IN THE LONGEST DAY,"The events of D-Day, told on a grand scale from both the Allied and German points of view.","['Ken Annakin', 'Andrew Marton', '3 more credits']",178 min,https://www.imdb.com/title/tt0056197/
INSERT INTO actor_movie(actor_id, movie_id)
    SELECT a.id, m.id
    FROM actors a CROSS JOIN
         movies m
    WHERE a.actor_name = ? AND
          m.title = ?;

分别是演员姓名和标题的参数占位符。

csv包含的列比表中的架构多。修复表的模式,发布示例数据和您希望澄清的内容。我只需要csv中的那些列。