[英](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.