- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
#!/usr/bin/env python
from sys import argv
from pymongo import MongoClient
conn = MongoClient('127.0.0.1', 27017)
base = conn.xmldata
try:
from lxml import etree
except ImportError:
import xml.etree.ElementTree as etree
def parse_xml(filename):
tree = etree.parse(filename)
root = tree.getroot()
cntr = root.getchildren()
for country in cntr:
data_struct = {}
data_struct['name'] = country.attrib['name']
for key in ['rank', 'year', 'gdppc']:
value = country.find(key).text
data_struct[key] = value
neighbors = []
for row in country.iter('neighbor'):
neighbor = {}
neighbor['name'] = row.attrib['name']
neighbor['direction'] = row.attrib['direction']
neighbors.append(neighbor)
data_struct['neighbors'] = neighbors
insert_data("country", data_struct)
def insert_data(collection, data_struct):
coll = base[collection]
try:
coll.insert_one(data_struct)
except Exception as e:
raise
filename = argv[1]
parse_xml(filename)
Python учЮ... говно?
guest 19.04.2016 18:34 # +3
а так нормально
guest 19.04.2016 18:49 # +3
guest 19.04.2016 18:49 # +2
все таки пайтон хороший скриптовый язык, небольшие скрипты на нем всегда чистые и аккуратные
rds 19.04.2016 18:53 # 0
guest 19.04.2016 18:51 # +1
- строки 44-45 выделите в def main()
- в конце скрипта
- на всякий пожарный, я б добавил проверку на аргумент, есть он или нет
- не работал с монгой из питона, но в 38й строке, если в base нет collection все ли будет нормально?
rds 19.04.2016 18:57 # 0
guest 19.04.2016 18:57 # 0
rds 19.04.2016 19:02 # 0
guest 19.04.2016 19:07 # 0
pycharm наше все
rds 19.04.2016 19:10 # 0
Her 19.04.2016 19:48 # 0
mongo поддерживает batch insert, лучше все документы сохранять одним риквестом
rds 19.04.2016 20:00 # 0
Her 19.04.2016 20:48 # +1
guest 07.05.2016 00:01 # +1
Vasiliy 10.05.2016 16:15 # 0
3_14dar 10.05.2016 23:01 # 0
raise
Смысл?
guesto 11.05.2016 00:52 # 0
3_14dar 17.07.2016 00:02 # 0
bormand 17.07.2016 06:00 # 0
В питоне то, где их бросают на каждый чих? "Ааааа, массив кончился, всё пиздец исключение"
З.Ы. Или ты предлагаешь по бектрейсу найти кто кинул и туда бряк поставить?
3_14dar 17.07.2016 21:03 # 0
>Или ты предлагаешь по бектрейсу найти кто кинул и туда бряк поставить?
Такое кстати есть.