Python django插入到Oracle数据库中的标识符无效

Python django插入到Oracle数据库中的标识符无效,python,django,oracle,insert,Python,Django,Oracle,Insert,正在尝试使用Django将数据插入数据库的表中。这是我尝试插入的表的模型: class RunableFilters(models.Model): equipment_id = models.BigIntegerField(null=True, blank=True) filter_file_name = models.CharField(max_length=255, blank=True) last_updated = models.CharField(max_len

正在尝试使用Django将数据插入数据库的表中。这是我尝试插入的表的模型:

class RunableFilters(models.Model):
    equipment_id = models.BigIntegerField(null=True, blank=True)
    filter_file_name = models.CharField(max_length=255, blank=True)
    last_updated = models.CharField(max_length=255, blank=True)
    class Meta:
        db_table = 'runable_filters'
我得到的错误是:

>>> from books.models import RunableFilters
>>> p1 = RunableFilters(equipment_id = '123456778', filter_file_name = "test_file_name", last_updated = "2013-16-8")
>>> p1.save()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\Python27\lib\site-packages\django\db\models\base.py", line 546, in save
    force_update=force_update, update_fields=update_fields)
  File "C:\Python27\lib\site-packages\django\db\models\base.py", line 650, in save_base
    result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)
  File "C:\Python27\lib\site-packages\django\db\models\manager.py", line 215, in _insert
    return insert_query(self.model, objs, fields, **kwargs)
  File "C:\Python27\lib\site-packages\django\db\models\query.py", line 1675, in insert_query
    return query.get_compiler(using=using).execute_sql(return_id)
  File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py", line 937, in execute_sql
    cursor.execute(sql, params)
  File "C:\Python27\lib\site-packages\django\db\backends\util.py", line 41, in execute
    return self.cursor.execute(sql, params)
  File "C:\Python27\lib\site-packages\django\db\backends\oracle\base.py", line 717, in execute
    six.reraise(utils.DatabaseError, utils.DatabaseError(*tuple(e.args)), sys.exc_info()[2])
  File "C:\Python27\lib\site-packages\django\db\backends\oracle\base.py", line 710, in execute
    return self.cursor.execute(query, self._param_generator(params))
DatabaseError: ORA-00904: "RUNABLE_FILTERS"."ID": invalid identifier
>>来自books.models导入可运行过滤器
>>>p1=可运行过滤器(设备id='123456778',过滤器文件名称=“测试文件名称”,最后更新=“2013-16-8”)
>>>p1.保存()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Python27\lib\site packages\django\db\models\base.py”,第546行,保存
强制更新=强制更新,更新字段=更新字段)
文件“C:\Python27\lib\site packages\django\db\models\base.py”,第650行,在save\u base中
结果=管理器。\插入([self],字段=字段,返回\u id=update\u pk,using=using,raw=raw)
文件“C:\Python27\lib\site packages\django\db\models\manager.py”,第215行,插入
返回insert_查询(self.model、objs、字段、**kwargs)
文件“C:\Python27\lib\site packages\django\db\models\query.py”,第1675行,插入\u查询
return query.get\u编译器(using=using).execute\u sql(return\u id)
文件“C:\Python27\lib\site packages\django\db\models\sql\compiler.py”,第937行,在execute\u sql中
cursor.execute(sql,params)
文件“C:\Python27\lib\site packages\django\db\backends\util.py”,第41行,执行
返回self.cursor.execute(sql,params)
文件“C:\Python27\lib\site packages\django\db\backends\oracle\base.py”,第717行,在execute中
6.reraise(utils.DatabaseError,utils.DatabaseError(*tuple(e.args)),sys.exc_info()[2])
文件“C:\Python27\lib\site packages\django\db\backends\oracle\base.py”,第710行,在execute中
返回self.cursor.execute(查询,self.param\u生成器(params))
DatabaseError:ORA-00904:“可运行的_筛选器”。“ID”:无效标识符
那是我房间里的桌子


这就是问题所在,django需要一个名为
id

您可以轻松解决此问题,了解如何集成遗留数据库:

对于您的代码,找到主键并通知django。Le'ts supose
设备id
可作为主键:

class RunableFilters(models.Model):
    equipment_id = models.BigIntegerField( primary_key=True)  #<-- here
    filter_file_name = models.CharField(max_length=255,  ...
类可运行过滤器(models.Model):

equipment_id=models.BigIntegerField(primary_key=True)#运行python 32位2.7和django 1.5.2的数据库是由django的
syncdb
命令创建的吗?如果没有,请向我们展示您的表架构。该数据库是一个遗留数据库,并且是与RunableFilters表一起创建和构造的,我运行了inspectdb来为该表创建模型。。为表添加了架构这就是问题所在,django需要一个名为
id
的PK字段,您可以轻松解决它,了解如何集成遗留数据库:。实际上,只是尝试将设备id添加为主键,在我检查此项之前,它就工作了。我正要写一个答案。谢谢你的帮助