저는 파이썬 스크립트를 사용하여 서버에서 XML 데이터를 읽고 데이터베이스에 XML 데이터를 저장하려고합니다. 데이터베이스를 만들면 각 데이터를 가져 오지 않고 XML 목록을 데이터베이스에 쓰고 다음과 같은 데이터베이스 테이블을 만들지 않습니다. http://imageshack.com/a/img401/4210/ofa5.jpgxml 데이터를 가져와 데이터베이스에 쓰는 방법
xml은 서버 링크 :
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 데이터 나 데이터베이스 테이블을 생성 할 때 한 후 데이터베이스에 기록 할 가져 오기하려는 : 여기 http://ontv.dk/xmltv/c81e728d9d4c2f636f067f89cc14862c
는 현재 코드입니다. 나는 xbmc에 대한 소스를 작성하여 데이터베이스 테이블을 만들 때 데이터베이스에 저장할 각 xml 데이터를 가져 오는 방법을 알고 싶습니다.
create table 문 실행 후 커밋 문 ('con.commit()')이 없으므로 변경 사항이 유지되지 않습니다. – Talvalin
@Talvalin 커밋 문'con.commit()'이 없으므로 어떻게해야합니까? XML 데이터를 가져올 수있는 방법은 무엇입니까? –
ElementTree 설명서를 읽으십시오. http://docs.python.org/2/library/xml.etree.elementtree.html 필요한 데이터를 XML 파일에서 가져 와서 글을 써보십시오. 당신의 식탁에. – Talvalin