Кодировка в БД соответствующая
некоторые функции я убрал, но сути дела они не меняют
работает нормально :
# -*- coding: utf-8 -*-
import socket, string
import xml.dom.minidom
import datetime
import threading
import cx_Oracle
###
# Импорт среды джанго
# Этот файл должен лежать в проекте джанго
###
import os,sys,codecs
sys.path.append(os.path.join(os.path.abspath('..'), 'www'))
from django.core.management import setup_environ
import settings
setup_environ(settings)
from taxi.myapp.models import cancels
###
#
###
def getText(nodelist):
rc = []
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
rc.append(node.data)
return ''.join(rc)
class Thread_from(threading.Thread):
def run(self):
import xml.dom.minidom
package_type = xml_type(result)
xml_from = xml.dom.minidom.parseString(result)
if package_type==u'5':
xml = '<b>bla bla bla<b>'
sock.send(xml)
print "[%s] Отправлено:" % datetime.datetime.now(),xml
elif package_type==u'15':
try:
b = cancels(
comments = getText(xml_from.getElementsByTagName("Comment")[0].childNodes),
)
b.save(using='oracle')
except IndexError:
print "[%s] В заказе отсутствуют теги" % datetime.datetime.now()
HOST = 'host'
PORT = port
try :
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
except Exception, e:
print e
while True:
len_recv = 1
result = sock.recv(len_recv)
len_recv = get_len_xml(result)
result = get_xml(len_recv)
print "[%s] Получено:" % datetime.datetime.now(),result
print "Длина полученой XML =",len(result)
Thread_from().start()
так как я привык работать с django , я использовал ее orm для работы
и все таки суть в том что если сделать так :
# -*- coding: utf-8 -*-
import socket, string
import xml.dom.minidom
import datetime
import threading
import cx_Oracle
###
# Импорт среды джанго
# Этот файл должен лежать в проекте джанго
###
import os,sys,codecs
sys.path.append(os.path.join(os.path.abspath('..'), 'www'))
from django.core.management import setup_environ
import settings
setup_environ(settings)
from taxi.myapp.models import cancels
###
#
###
def getText(nodelist):
rc = []
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
rc.append(node.data)
return ''.join(rc)
HOST = 'host'
PORT = port
try :
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
except Exception, e:
print e
while True:
len_recv = 1
result = sock.recv(len_recv)
len_recv = get_len_xml(result)
result = get_xml(len_recv)
print "[%s] Получено:" % datetime.datetime.now(),result
print "Длина полученой XML =",len(result)
import xml.dom.minidom
package_type = xml_type(result)
xml_from = xml.dom.minidom.parseString(result)
if package_type==u'5':
xml = '<b>bla bla bla<b>'
sock.send(xml)
print "[%s] Отправлено:" % datetime.datetime.now(),xml
elif package_type==u'15':
try:
b = cancels(
comments = getText(xml_from.getElementsByTagName("Comment")[0].childNodes),
)
b.save(using='oracle')
except IndexError:
print "[%s] В заказе отсутствуют теги" % datetime.datetime.now()
то есть перенести блок кода непосредственно в цикл , то все начинает ложится квадратами
так тоже не работает, все те же квадраты
comments = getText(xml_from.getElementsByTagName("Comment")[0].childNodes).encode('utf8')