在django中读取文件并写入数据库

时间:2010-07-20 20:10:46

标签: python database django file file-io

我有一个Django应用程序,它打开一个文件,不断读取它,同时将数据写入Postgres数据库。我的问题是每当我打开文件时,

file = open(filename, 'r')

我无法在数据库中创建新内容,

Message.objects.create_message(sys, msg)

那应该创建一个包含两个字符串的数据库条目。然而,似乎没有任何事情发生,我没有错误:(如果我决定关闭文件,file.close(),在我写入数据库之前一切都很好。我的问题是我需要打开文件创建我的对象。有人有解决方案吗?谢谢。

修改

这是我的一些代码。基本上我在文件结束后有以下片段,然后在获取信息时写入数据库。

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 个答案:

答案 0 :(得分:3)

试试这个:

file = open(filename, 'r')
fileContents = file.read()
file.close()

答案 1 :(得分:2)

你尝试过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()