繁体   English   中英

(1054,“'字段列表'中的未知列'nan'”)Django bulk_create

[英](1054, “Unknown column 'nan' in 'field list'”) Django bulk_create

尝试使用 Django 的 bulk_create 方法插入数据时出现以下错误。 插入的所有数据都不会发生这种情况。

(1054,“'字段列表'中的未知列'nan'”)

我真的不明白“nan”是从哪里来的,因为我在这里明确声明了我的所有字段。

我试图一次向数据库中插入大量对象(大约 10,000 个或更多)

我的代码如下,其中观察是另一个对象,TemporaryPhotometry 是正在使用的模型:

    # With thanks to https://stackoverflow.com/questions/18383471/django-bulk-create-function-example for the
    # example on how to use the bulk_create function so we don't thrash the DB

    phot_objects = [
        TemporaryPhotometry(
            calibrated_magnitude=function_to_make_calibrated_magnitude(),
            calibrated_error=uncertainty_stars[i],
            magnitude_rms_error=mage_2[i],
            x=x_2[i],
            y=y_2[i],
            alpha_j2000=ra_2[i],
            delta_j2000=de_2[i],
            fwhm_world=fwhm_2[i],
            flags=flag_2[i],
            magnitude=mag_2[i],
            observation=observation,
        )
        for i in range(0, len(num_2))
    ]

    TemporaryPhotometry.objects.bulk_create(phot_objects)

对于解决此问题的任何帮助,我将不胜感激。 谢谢。

完整的堆栈跟踪如下:

File "/var/www/image_processing/analysis/utils/calibration.py" in do_calibration
  545.         TemporaryPhotometry.objects.bulk_create(phot_objects)

File "/usr/lib64/python2.7/site-packages/django/db/models/manager.py" in manager_method
  85.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "/usr/lib64/python2.7/site-packages/django/db/models/query.py" in bulk_create
  443.                 ids = self._batched_insert(objs_without_pk, fields, batch_size)

File "/usr/lib64/python2.7/site-packages/django/db/models/query.py" in _batched_insert
  1099.                 self._insert(item, fields=fields, using=self.db)

File "/usr/lib64/python2.7/site-packages/django/db/models/query.py" in _insert
  1076.         return query.get_compiler(using=using).execute_sql(return_id)

File "/usr/lib64/python2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql
  1099.                 cursor.execute(sql, params)

File "/usr/lib64/python2.7/site-packages/django/db/backends/utils.py" in execute
  65.                 return self.cursor.execute(sql, params)

File "/usr/lib64/python2.7/site-packages/django/db/utils.py" in __exit__
  94.                 six.reraise(dj_exc_type, dj_exc_value, traceback)

File "/usr/lib64/python2.7/site-packages/django/db/backends/utils.py" in execute
  65.                 return self.cursor.execute(sql, params)

File "/usr/lib64/python2.7/site-packages/django/db/backends/mysql/base.py" in execute
  101.             return self.cursor.execute(query, args)

File "/usr/lib64/python2.7/site-packages/MySQLdb/cursors.py" in execute
  205.             self.errorhandler(self, exc, value)

File "/usr/lib64/python2.7/site-packages/MySQLdb/connections.py" in defaulterrorhandler
  36.     raise errorclass, errorvalue

Exception Type: OperationalError at /process/calibration/624/
Exception Value: (1054, "Unknown column 'nan' in 'field list'")

我能够通过使用以下 if 语句包装所有 NumPy 数组(例如uncertainty_stars[i]来检查它们是否为 NaN 来解决此问题。

uncertainty_stars[i] if not numpy.isnan(uncertainty_stars[i]) else None

也许是一个线索:在 C# 中,在计算中除以零时,“NaN”被分配给一个双精度值。 尝试将此结果插入数据库时​​,会返回此错误。 在除法之前检查你的分母。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM