Django mysql在保存对象时收到警告
我刚刚编写了一个小应用程序,使用Django将单词存储在我的mysql数据库中。我从一个非常有序的文本文件中读取数据,如下所示: 文本文件如下所示:Django mysql在保存对象时收到警告,mysql,django,Mysql,Django,我刚刚编写了一个小应用程序,使用Django将单词存储在我的mysql数据库中。我从一个非常有序的文本文件中读取数据,如下所示: 文本文件如下所示: DELUGE DELUSION DELVE DEMAGOGUE DEMANDING DEMOLITION DEMONSTRATE DEMORALIZE DEMOTIC DEMUR DENIGRATE DENOUEMENT DENOUNCE DENT DENUDE DEPLETE DEPLORE DEPLOY for line in open('
DELUGE
DELUSION
DELVE
DEMAGOGUE
DEMANDING
DEMOLITION
DEMONSTRATE
DEMORALIZE
DEMOTIC
DEMUR
DENIGRATE
DENOUEMENT
DENOUNCE
DENT
DENUDE
DEPLETE
DEPLORE
DEPLOY
for line in open('/home/jacos/sorted-gre.txt').readlines():
... if line:
... p = Word(word_spelling = line)
... p.save()
然后我用open('thefile')从中读取日期。读行如下:
DELUGE
DELUSION
DELVE
DEMAGOGUE
DEMANDING
DEMOLITION
DEMONSTRATE
DEMORALIZE
DEMOTIC
DEMUR
DENIGRATE
DENOUEMENT
DENOUNCE
DENT
DENUDE
DEPLETE
DEPLORE
DEPLOY
for line in open('/home/jacos/sorted-gre.txt').readlines():
... if line:
... p = Word(word_spelling = line)
... p.save()
单词拼写字段是主键。
然后是这样的警告:
回溯(最近一次呼叫最后一次):
文件“”,第4行,在
文件“/usr/local/lib/python2.7/dist packages/django/db/models/base.py”,第460行,保存
self.save_base(使用=使用,强制插入=强制插入,强制更新=强制更新)
save_base中的文件“/usr/local/lib/python2.7/dist packages/django/db/models/base.py”,第553行
结果=管理器。\u插入(值,返回\u id=update\u pk,using=using)
文件“/usr/local/lib/python2.7/dist packages/django/db/models/manager.py”,第195行,插入
返回insert_查询(self.model,value,**kwargs)
文件“/usr/local/lib/python2.7/dist packages/django/db/models/query.py”,第1436行,插入查询
return query.get\u编译器(using=using).execute\u sql(return\u id)
文件“/usr/local/lib/python2.7/dist packages/django/db/models/sql/compiler.py”,第791行,在execute\u sql中
cursor=super(SQLInsertCompiler,self)。执行\u sql(无)
文件“/usr/local/lib/python2.7/dist packages/django/db/models/sql/compiler.py”,第735行,在execute\u sql中
cursor.execute(sql,params)
文件“/usr/local/lib/python2.7/dist packages/django/db/backends/util.py”,执行中的第34行
返回self.cursor.execute(sql,params)
文件“/usr/local/lib/python2.7/dist packages/django/db/backends/mysql/base.py”,执行中的第86行
返回self.cursor.execute(查询,参数)
文件“/usr/lib/pymodules/python2.7/MySQLdb/cursors.py”,执行中的第176行
如果不是self.\u延迟\u警告:self.\u警告\u检查()
文件“/usr/lib/pymodules/python2.7/MySQLdb/cursors.py”,第92行,在“警告”检查中
警告(w[-1],自警告,3)
第1行“单词拼写”列的数据被截断
因此,这些单词中只有一部分存储在mysql中。我想知道原因。字符域有一个max\u length属性。生成数据库时设置了什么 对于
Word.object.get(pk=1).Word\u拼写
与你的警告无关,但是
建议使用with
语句关闭或打开文件
with open('/home/jacos/sorted-gre.txt') as f:
for line in f.readlines():
if line:
p = Word(word_spelling = line)
p.save()
您缺少回溯中的最后一行…该行准确显示了引发的错误。您可以添加这些吗?@DavidWolever警告:第1行“word_spelling”列的数据被截断。对此表示抱歉。请发布
word
oops的模型定义。我忘记了最大长度已设置为20,我发现有比该长度更长的单词。(错误地)因此问题得到解决。感谢帮助。