【发布时间】:2020-01-05 07:43:10
【问题描述】:
我正在尝试在 Django 中使用光标进行插入查询,但此错误表明我搜索了多个解决方案,但没有任何帮助,错误是: sql = sql % tuple('?' * len(params)) TypeError:字符串格式化期间并非所有参数都转换了
我尝试使用 '%s' 而不是 '?'但它没有工作
def insert_DTARFDE2003SYD0827(sourcePE,sourceInterFace,targetPE,targetInterFace):
params = (sourcePE, sourceInterFace,targetPE,targetInterFace)
if sourcePE!=None and sourceInterFace!=None and targetPE!=None and targetInterFace!=None:
sql=" insert into DTA.RFDE2003SYD0827 values ( '?','?',NULL,NULL,NULL,'?','?' "
with connections['DataAdmin'].cursor() as cursor:
cursor.execute(sql,params)
我的数据库:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'Fileade',
'HOST': '10.238.76.53',
'USER': 'SDS_dataflow',
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
}
} ,
'DataAdmin': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'Data_Admin',
'HOST': '10.238.76.53',
'USER': 'SDS_dataflow',
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
}
}
}
Traceback (most recent call last):
File "C:\Users\Mohammed\Envs\TestEnv\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "C:\Users\Mohammed\Envs\TestEnv\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\Mohammed\Envs\TestEnv\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "D:\College\Orange Training\MassiveMigrationPortalTool\posts\views.py", line 137, in preStepBtn1
insert_DTARFDE2003SYD0827(sourcePE,targetPE,sourceInterFace,targetInterFace)
File "D:\College\Orange Training\MassiveMigrationPortalTool\posts\views.py", line 36, in insert_DTARFDE2003SYD0827
cursor.execute(sql,params)
File "C:\Users\Mohammed\Envs\TestEnv\lib\site-packages\django\db\backends\utils.py", line 100, in execute
return super().execute(sql, params)
File "C:\Users\Mohammed\Envs\TestEnv\lib\site-packages\django\db\backends\utils.py", line 68, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "C:\Users\Mohammed\Envs\TestEnv\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
return executor(sql, params, many, context)
File "C:\Users\Mohammed\Envs\TestEnv\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
return self.cursor.execute(sql, params)
File "C:\Users\Mohammed\Envs\TestEnv\lib\site-packages\sql_server\pyodbc\base.py", line 542, in execute
sql = self.format_sql(sql, params)
File "C:\Users\Mohammed\Envs\TestEnv\lib\site-packages\sql_server\pyodbc\base.py", line 510, in format_sql
sql = sql % tuple('?' * len(params))
TypeError: not all arguments converted during string formatting
【问题讨论】:
-
请发布完整的回溯,并指定您正在使用的 db-api 连接器(pyodbc、pymssql、其他?)。但在所有情况下,对于符合 db-api 的连接器,不应该引用占位符(db-api 连接器有责任处理正确的引用)。
标签: sql sql-server django django-models