Уведомления

Группа в Telegram: @pythonsu

#1 Март 29, 2011 17:07:57

vip57
От:
Зарегистрирован: 2011-02-14
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

заполнить начальную базу в Django

Читаю данные из файла

# -*- mode: python; coding: utf-8; -*-

import profiles
import sys, os
import string, re

os.environ['DJANGO_Settings_MODULE']='settings'
from django.db import models
from django.utils.translation import ugettext_lazy as _
from profiles.models import Profile
from django.contrib.auth.models import User

from django.conf import settings

try:
file_in=open('krumn-6-1.txt', 'rb')
except IOError, e:
print e

line=file_in.readline()
i=0

while line:
i = i+1
nname = ""
naccount = ""
nmail = ""
company = ""
department = ""
description = ""
nlocation = ""
telefon = ""
title = ""
print " %d \n" % i
el = line.split('|')
lo=""
for j in (15,16,34,40,43,44,45,46,47):
lo = lo+el[j]+","
if j== 15:
nname = el[j] # ФИО
elif j== 16:
naccount = el[j] # учетная запись
elif j== 34:
nmail = el[j] # почта
elif j== 40:
company = el[j] # Компания КРУМН пропустим
elif j== 43:
department = el[j] # Отдел - загоним в описание
elif j== 44:
description = el[j] # Должность
elif j== 45:
nlocation = el[j] # Комната
elif j== 46:
telefon = el[j] # Телефон
elif j== 47:
title = el[j] # Опять должнось
else:
pass

try:
us = User.objects.create_user(username=naccount,email=nmail,password="1")
except BaseException, e:
j=0
if j>0:
n=nname.find('')
us.first_name=nname[:n-1]
us.last_name=nname[n+1:]
us.set_password="1"
us.is_staff=True
us.is_active=True
us.is_superuser=False
us.save()
#print us.id

p = Profile(user_id=us.id,location=nlocation,about_me=department+"\n"+description+"\n"+telefon)
p.save()
#print p
line=file_in.readline()

file_in.close()
#file_out.close()
Файл в формате utf8
Пишет, DatabaseError^ You mast not use 8-bit bytestring

Если в программе писать имена, то проходит!
Что делать?!



Офлайн

#2 Март 29, 2011 17:31:57

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

заполнить начальную базу в Django

Похоже, база требует unicode.
Попробуй читать файл так:

line=file_in.readline().decode( "utf-8" )



Офлайн

#3 Март 29, 2011 19:20:12

vip57
От:
Зарегистрирован: 2011-02-14
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

заполнить начальную базу в Django

Спасибо agalen!
Всё загрузил!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version