Python Django psycopg2.errors.StringDataRightTruncation:类型字符的值太长

Posted

技术标签:

【中文标题】Python Django psycopg2.errors.StringDataRightTruncation:类型字符的值太长【英文标题】:Python Django psycopg2.errors.StringDataRightTruncation: value too long for type character 【发布时间】:2020-10-18 15:50:46 【问题描述】:

我是pycharm控制台中的以下代码,我的日期长度明显小于提到的字段大小,那么为什么会出现这个错误

我的代码

df=pd.read_csv('/home/asif/Documents/Projects/TaxVisor/legal.txt',header=None,names=['type'])


for type in df['type']:
...     print(type)
...     print(len(type))
...     LegalElement.objects.create(type=df['type']) 

我的模特:

类 LegalElement(models.Model): type = models.CharField(max_length=25, null=False)

我的数据(来自 CSV)

PTY LTD
PTY. LTD
PTY. LIMITED
PTY. LTD.
PTY LTD.
PTY LIMITED
PROPRIETARY LTD.
PROPRIETARY LTD
PROPRIETARY LIMITED

我的数据库

create table company_registration_legalelement
(
    id   serial      not null
        constraint company_registration_legalelement_pkey
            primary key,
    type varchar(25) not null
);

我的错误:

Traceback (most recent call last):
  File "/home/asif/DevProjects/taxvisor/venv/lib/python3.8/site-packages/django/db/backends/utils.py", line 86, in _execute
    return self.cursor.execute(sql, params)
psycopg2.errors.StringDataRightTruncation: value too long for type character varying(25)

【问题讨论】:

你能显示for type in df['type']: sn-p 的输出吗?这也是完整的 CSV 数据集吗? 【参考方案1】:

数据已超过 max_length=25 值。相反,如果使用 models.CharField。请使用models.TextField。它可以处理任意长度的字符体。Doc for models.TextField

代码

你的代码应该是

class LegalElement(models.Model): 
        type = models.TextField(null=False)

【讨论】:

不幸的是,这并不能解决问题。数据库表有 varchar(25),因此当数据到达表时,向模型中填充更多内容将不起作用。

以上是关于Python Django psycopg2.errors.StringDataRightTruncation:类型字符的值太长的主要内容,如果未能解决你的问题,请参考以下文章

python django能开发大型网站吗

python 中 django 的问题-------- 请高人指点 尽量详细点哦 初学django

Python-Django框架学习笔记——第二课:Django的搭建

如何在python文件中,引用django1.10的model

python django怎么添加css-CSDN论坛

python的django工程可以用tomcat发布吗