【问题标题】:How to insert data in movie genre relation table?如何在电影流派关系表中插入数据?
【发布时间】: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

标签: sql database sqlite


【解决方案1】:

这是要插入到表中的查询

insert into movie_genres (mid,gid) values (1,1)
insert into movie_genres (mid,gid) values (1,2)

【讨论】:

  • 我的问题是我不知道如何插入从数据文件中获取的数据。插入电影和流派的数据来自文件。所以它应该类似于我上面显示的内容,但我不确定如何因为 mid 应该从电影表中获取,而 gid 应该从流派表中获取..
  • 所以我不应该自己插入数据,逐个值
  • 好的,所以您需要通过创建 2 列主页及其类型来创建 excel 文件..然后我们可以继续..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-05
  • 2012-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多