Чтение файлов и запись в базу данных в Django - PullRequest
1 голос
/ 21 июля 2010

У меня есть приложение Django, которое открывает файл, непрерывно читает его и одновременно записывает данные в базу данных Postgres. Моя проблема в том, что всякий раз, когда я открываю файл,

file = open(filename, 'r')

Я также не могу создавать новые вещи в базе данных,

Message.objects.create_message(sys, msg)

Это должно создать запись в базе данных с двумя строками. Однако, похоже, ничего не происходит, и я получаю без ошибок :( Если я решу закрыть файл, file.close(), прежде чем я пишу в базу данных, все в порядке. Моя проблема в том, что мне нужен этот файл, чтобы создать мои объекты . У кого-нибудь есть решение для этого? Спасибо.

EDIT

Вот еще немного моего кода. По сути, у меня есть следующий фрагмент кода после конца файла и последующей записи в базу данных при получении информации.

file.seek(0,2)         
while True:
  line = file.readline()
  if not line:
    time.sleep(1)
    continue
  Message.objects.create_message(sys, line)

РЕДАКТИРОВАТЬ 2

Наконец-то это сработало, но я не знаю почему. Я хотел бы понять, почему это сработало:

str1ng = line[0:len(line)-1]
Message.objects.create_message(sys, str1ng)

Некоторые различия между этой строкой и строкой, собранной из file.readline (). Есть идеи?

Ответы [ 2 ]

3 голосов
/ 21 июля 2010

попробуйте это:

file = open(filename, 'r')
fileContents = file.read()
file.close()
2 голосов
/ 21 июля 2010

Вы пробовали linecache?Нечто подобное может работать (не проверено).

import linecache

i = 0
go = True
file = ...
while (go == True):
   out = linecache.getline(file,i)
   ...process out...
   i = i+1
   if i % 100 == 0:
       # check for cache update every 100 lines
       linecache.checkcache(file)
   if ( some eof condition):
       go = False
linecache.clearcache()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...