Python ORA-01861:在django中执行get-model对象时,文字与格式字符串不匹配
我在django有一个模型对象,就像这样Python ORA-01861:在django中执行get-model对象时,文字与格式字符串不匹配,python,django,oracle,cx-oracle,Python,Django,Oracle,Cx Oracle,我在django有一个模型对象,就像这样 from django.db import models class Person(models.Model): employee_title = models.CharField(max_length=150) pk_person_id = models.IntegerField(primary_key=True) department_name = models.CharField(max_length=240)
from django.db import models
class Person(models.Model):
employee_title = models.CharField(max_length=150)
pk_person_id = models.IntegerField(primary_key=True)
department_name = models.CharField(max_length=240)
cost_center = models.CharField(max_length=150)
user_name = models.CharField(max_length=100)
def __str__(self):
return self.user_name
class Meta:
managed = False
db_table = 'company_hr_idm_data_v'
testobj = Person.objects.using('oracle').get(pk=4)
在我看来,我正在对Person对象进行简单的访问,就像这样
from django.db import models
class Person(models.Model):
employee_title = models.CharField(max_length=150)
pk_person_id = models.IntegerField(primary_key=True)
department_name = models.CharField(max_length=240)
cost_center = models.CharField(max_length=150)
user_name = models.CharField(max_length=100)
def __str__(self):
return self.user_name
class Meta:
managed = False
db_table = 'company_hr_idm_data_v'
testobj = Person.objects.using('oracle').get(pk=4)
代码出错,数据库错误如下:
ORA-01861:文字与格式字符串不匹配
这是我在我的settings.py中将调试模式设置为true时的堆栈跟踪代码
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/roles/testing
Django Version: 1.7.2
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'roles')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
Traceback:
File "/Users/adjeibad/.virtualenvs/wwtmlserver/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/adjeibad/.virtualenvs/wwtmlserver/entitlements/roles/views/Organization.py" in test
9. testobj = Person.objects.using('oracle').get(pk=4)
File "/Users/adjeibad/.virtualenvs/wwtmlserver/lib/python2.7/site- packages/django/db/models/query.py" in get
351. num = len(clone)
File "/Users/adjeibad/.virtualenvs/wwtmlserver/lib/python2.7/site-packages/django/db/models/query.py" in __len__
122. self._fetch_all()
File "/Users/adjeibad/.virtualenvs/wwtmlserver/lib/python2.7/site-packages/django/db/models/query.py" in _fetch_all
966. self._result_cache = list(self.iterator())
File "/Users/adjeibad/.virtualenvs/wwtmlserver/lib/python2.7/site-packages/django/db/models/query.py" in iterator
265. for row in compiler.results_iter():
File "/Users/adjeibad/.virtualenvs/wwtmlserver/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in results_iter
700. for rows in self.execute_sql(MULTI):
File "/Users/adjeibad/.virtualenvs/wwtmlserver/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql
786. cursor.execute(sql, params)
File "/Users/adjeibad/.virtualenvs/wwtmlserver/lib/python2.7/site-packages/django/db/backends/utils.py" in execute
81. return super(CursorDebugWrapper, self).execute(sql, params)
File "/Users/adjeibad/.virtualenvs/wwtmlserver/lib/python2.7/site-packages/django/db/backends/utils.py" in execute
65. return self.cursor.execute(sql, params)
File "/Users/adjeibad/.virtualenvs/wwtmlserver/lib/python2.7/site-packages/django/db/utils.py" in __exit__
94. six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/Users/adjeibad/.virtualenvs/wwtmlserver/lib/python2.7/site-packages/django/db/backends/utils.py" in execute
65. return self.cursor.execute(sql, params)
File "/Users/adjeibad/.virtualenvs/wwtmlserver/lib/python2.7/site- packages/django/db/backends/oracle/base.py" in execute
916. return self.cursor.execute(query, self._param_generator(params))
Exception Type: DatabaseError at /roles/testing
Exception Value: ORA-01861: literal does not match format string
哦!!这里还有生成的查询
SELECT * FROM (SELECT ROWNUM AS "_RN", "_SUB".* FROM (SELECT "COMPANY_HR_IDM_DATA_V"."EMPLOYEE_TITLE", "COMPANY_HR_IDM_DATA_V"."PK_PERSON_ID", "COMPANY_HR_IDM_DATA_V"."DEPARTMENT_NAME", "COMPANY_HR_IDM_DATA_V"."COST_CENTER", "COMPANY_HR_IDM_DATA_V"."USER_NAME" FROM "COMPANY_HR_IDM_DATA_V" WHERE "COMPANY_HR_IDM_DATA_V"."PK_PERSON_ID" = :arg0) "_SUB" WHERE ROWNUM <= 21) WHERE "_RN" > 0
我试着尽可能多地输入信息,有人能给我指引正确的方向吗?你能通过输入直接执行查询吗?。输入和实际列类型之间可能存在数据类型差异。在检索对象之前,是否需要执行该语句?票上说他们在处理日期时遇到了问题。我没有访问日期信息。我注意到django运行了他们在应用程序启动时提到的两个查询。你是对的,看起来这张罚单实际上并没有关系。我已经删除了那个注释,以防止将来的混淆。可能是db中的表已经创建了,而不是由模型创建的吗?表已经创建了。我所要做的就是从中读取数据。我尝试过为数据库中的另一个表创建一个模型,效果很好。当我尝试访问公司\u hr\u idm\u data\u v时,它会给我该错误,并且我使用的db用户具有完全访问权限。表列pk\u person\u id可能是为string或其他内容创建的,但不是integer,因此当pk=4传递时,它是integer,但预期是string