【发布时间】:2015-10-01 16:20:15
【问题描述】:
当我尝试执行此代码时遇到以下问题:
try:
with open('moviedata.json') as data_file:
data = json.load(data_file)
for movie in data:
global year
global title
global info
global directors
global release
global rating
global genres
global img
global plot
global rank
global running_time
global actors
if 'year' in movie:
year = movie['year']
if 'title' in movie:
title = movie['title']
if 'info' in movie:
info = movie['info']
if 'directors' in movie['info']:
directors = [movie['info']['directors']]
if 'release_data' in movie:
release = movie['info']['release_date']
if 'rating' in movie['info']:
rating = movie['info']['rating']
if 'genres' in movie['info']:
genres = movie['info']['genres']
if 'image_url' in movie['info']:
img = movie['info']['image_url']
if 'plot' in movie['info']:
plot = movie['info']['plot']
if 'rank' in movie['info']:
rank = movie['info']['rank']
if 'running_time_secs' in movie['info']:
running_time = movie['info']['running_time_secs']
if 'actors' in movie['info']:
actors = movie['info']['actors']
sqlstatement = '''insert into directors(name)(select %(directors) where not exists(select 1 from directors where name = %(directors));'''
print sqlstatement
cur.execute(sqlstatement)
这些文件包含 4000 多部电影的大量 json 数据,其中一些包含您可以在 if 语句中看到的值,而有些则没有。
directors 变量确实加载了一些字符串类型的数据。
【问题讨论】:
-
sqlstatement是一个元组。它应该是一个字符串。 -
我知道你能举个例子来说明我是如何转换它的吗?
-
从行尾删除
, (directors[0])。 -
与您的问题没有直接关系,但您应该真正尝试摆脱那些
global声明。
标签: python json postgresql