【发布时间】:2019-12-08 01:48:09
【问题描述】:
我有一个包含电影信息的 IMDb 数据文件,我想创建一个数据库。 我创建了两个表:电影和流派
c.execute("""CREATE TABLE IF NOT EXISTS movie(
budget integer,
homepage text,
id integer,
original_language text,
original_title text,
overview text,
popularity integer,
release_date text,
revenue integer,
runtime integer,
status text,
tagline text,
title text,
vote_average integer,
vote_count integer,
primary key(id)
)""")
c.execute("""CREATE TABLE genre(
id integer,
name text,
primary key(id)
)""")
然后我像这样将数据插入到表中:
for index, movies in data.iterrows():
try:
c.execute("INSERT INTO movie VALUES (:budget, :homepage, :id, :original_language, :original_title, :overview, :popularity, :release_date, :revenue, :runtime, :status, :tagline, :title, :vote_average, :vote_count)",
{'budget': movies['budget'], 'homepage': movies['homepage'], 'id': movies['id'], 'original_language': movies['original_language'], 'original_title': movies['original_title'],
'overview': movies['overview'], 'popularity': movies['popularity'], 'release_date': movies['release_date'], 'revenue': movies['revenue'], 'runtime': movies['runtime'],
'status': movies['status'], 'tagline': movies['tagline'],
'title': movies['title'], 'vote_average': movies['vote_average'], 'vote_count': movies['vote_count']})
except sqlite3.IntegrityError as e:
pass # ignore SQLite complaints about UNIQUE primary keys
for movie_genres in data['genres']:
for genres in movie_genres:
try:
c.execute("INSERT INTO genre VALUES (:id, :name)", {'id': genres['id'], 'name': genres['name']})
except sqlite3.IntegrityError as e:
pass # ignore SQLite complaints about UNIQUE primary keys
电影和流派有多对多的关系,我想为此创建一个表并在此表中插入数据。
我该怎么做?
【问题讨论】:
-
创建一个以movie_id和genre_id为外键的新表。然后您可以添加数据。如果您可以向我们展示示例数据,那将会很有帮助
-
我创建了:``` c.execute("""CREATE TABLE IF NOT EXISTS movie_genres(mid integer, gid integer, primary key(mid, gid) foreign key(mid) references movie(id) ) 外键(gid) 引用流派(id) )""") ``` 但是我不知道如何插入数据.. 你的意思是什么样本数据?数据应从数据文件中获取,与插入流派和电影数据的方式相同...
-
能否请您在表格中插入示例数据,然后显示数据?
-
我的意思是在电影和流派表中插入样本数据
-
很抱歉,我不确定您的意思。数据文件包含有关 5000 部电影的信息。例如:budget = 237000000 homepage = avatarmovie.com id = 19995 original_language = En etc.. 类型:id = 3 name = Action