2012-02-29 3 views
0

Django.I을 사용하여 mysql 데이터베이스에 단어를 저장하는 작은 응용 프로그램을 작성하는 중입니다. 다음과 같이 매우 잘 구성된 텍스트 파일에서 데이터를 읽습니다. 텍스트 파일은 이 :개체를 저장할 때 Django mysql이 경고를 받음

DELUGE 
DELUSION 
DELVE 
DEMAGOGUE 
DEMANDING 
DEMOLITION 
DEMONSTRATE 
DEMORALIZE 
DEMOTIC 
DEMUR 
DENIGRATE 
DENOUEMENT 
DENOUNCE 
DENT 
DENUDE 
DEPLETE 
DEPLORE 
DEPLOY 

그리고는 나는 ('thefile') 공개를 사용에서 날짜를 읽을 readlines 메쏘드를 다음과 같이 :.

for line in open('/home/jacos/sorted-gre.txt').readlines(): 
...  if line: 
...   p = Word(word_spelling = line) 
...   p.save() 

word_spelling 필드는 기본 키입니다. 역 추적 (마지막으로 가장 최근 통화) : 그런 다음이 경고했다 그 결과

File "<console>", line 4, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 460, in save 
    self.save_base(using=using, force_insert=force_insert, force_update=force_update) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 553, in save_base 
    result = manager._insert(values, return_id=update_pk, using=using) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py", line 195, in _insert 
    return insert_query(self.model, values, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 1436, in insert_query 
    return query.get_compiler(using=using).execute_sql(return_id) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py", line 791, in execute_sql 
    cursor = super(SQLInsertCompiler, self).execute_sql(None) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py", line 735, in execute_sql 
    cursor.execute(sql, params) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/backends/util.py", line 34, in execute 
    return self.cursor.execute(sql, params) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 86, in execute 
    return self.cursor.execute(query, args) 
    File "/usr/lib/pymodules/python2.7/MySQLdb/cursors.py", line 176, in execute 
    if not self._defer_warnings: self._warning_check() 
    File "/usr/lib/pymodules/python2.7/MySQLdb/cursors.py", line 92, in _warning_check 
    warn(w[-1], self.Warning, 3) 
    Data truncated for column 'word_spelling' at row 1 

을 mysql.I'd에 저장하고이 단어의 일부만 이유를 알고 싶다. 감사합니다. .

+0

추적 표시 줄의 마지막 줄이 누락되었습니다. 어떤 오류가 발생했는지 정확히 보여주는 줄. 추가 할 수 있습니까? –

+0

@DavidWolever 경고 : 행 1.sory에 'word_spelling'열의 데이터가 잘 렸습니다. – Gnijuohz

+1

모델은 어떻게 정의되어 있습니까? – StefanoP

답변

0

CharField에는 max_length 속성이 있습니다. Word.object.get(pk=1).word_spelling에 대해 데이터베이스를 생성 할 때 무엇을 설정 했습니까?

경고와 관련된 내용은 없지만 파일을 닫거나 with 문을 사용하여 열어 보는 것이 좋습니다.

with open('/home/jacos/sorted-gre.txt') as f: 
    for line in f.readlines(): 
     if line: 
      p = Word(word_spelling = line) 
      p.save() 
+0

oops.max_length가 20으로 설정되어 있다는 것을 잊었습니다. 그보다 긴 단어가 발견되었습니다. (실수로.) 그래서 문제가 해결되었습니다. 도움을 청합니다. – Gnijuohz

관련 문제