1

サーバーからxmlデータを読み取り、xmlデータをデータベースに保存するPythonスクリプトに取り組んでいます。データベースを作成すると、データごとにフェッチせずにデータベースに xml のリストが書き込まれ、次のようなデータベース テーブルが作成されないことがわかります: http://imageshack.com/a/img401 /4210/ofa5.jpg

サーバーリンクから取得したxml: http://ontv.dk/xmltv/c81e728d9d4c2f636f067f89cc14862c

現在のコードは次のとおりです。

import xbmc
import xbmcgui
import xbmcaddon
import os
import urllib
import urllib2
import StringIO
import sqlite3
import datetime
import time
from xml.etree import ElementTree

ADDON = xbmcaddon.Addon(id = 'script.myaddon')

class MyScript(xbmcgui.WindowXML):

def __new__(cls):
         return super(MyScript, cls).__new__(cls, 'script-menu.xml', ADDON.getAddonInfo('path'))

def onInit(self):

   #DOWNLOAD THE XML SOURCE HERE
   url = ADDON.getSetting('ontv.url')
   req = urllib2.Request(url)
   response = urllib2.urlopen(req)
   data = response.read()
   response.close()
   profilePath = xbmc.translatePath(os.path.join('special://userdata/addon_data/script.tvguide', ''))
   io = StringIO.StringIO(req)
   context = ElementTree.iterparse(io)


   if os.path.exists(profilePath):
      profilePath = profilePath + 'source.db'
      con = sqlite3.connect(profilePath)
      cur = con.cursor()
      cur.execute('CREATE TABLE programs(channel TEXT, title TEXT, start_date TIMESTAMP, end_date TIMESTAMP, description TEXT, image_large TEXT, image_small TEXT, source TEXT, updates_id INTEGER, FOREIGN KEY(channel, source) REFERENCES channels(id, source) ON DELETE CASCADE, FOREIGN KEY(updates_id) REFERENCES updates(id) ON DELETE CASCADE)')
      cur.close()
      fc = open(profilePath, 'w')
      fc.write(data)
      fc.close

データベーステーブルを作成した後、データベースに書き込む各xmlデータをフェッチしたい。データベーステーブルを作成した後、xbmc が各 xml データを取得してデータベースに格納するためのソースをどのように記述すればよいか知りたいです。

4

1 に答える 1