当前位置: 首页 > 知识库问答 >
问题:

试图在django中使用光标删除表

公西天逸
2023-03-14

我试图用光标删除一个表,但是,它总是说语法错误,虽然我以前使用过,但没有删除表

def check_TempTableNames(tableName):
    print(tableName)
    with connections['DataAdmin'].cursor() as cursor:
        print("Check Done")
        cursor.execute("DROP TABLE %s",[tableName]) 

def preStepBtn2(request):
    #empty=Rfde2003Syd0827.objects.using('DataAdmin').all()
    sourcePE = request.GET.get('sourcePE')
    targetPE =request.GET.get('targetPE')
    dropdownConnType =request.GET.get('dropdownConnType')
    sourceInterFace =request.GET.get('sourceInterFace')
    targetInterFace =request.GET.get('targetInterFace') 
    temp_looback = "sop_ce_loopback_interface_" + sourcePE + "_" + targetPE 
    TEMP_ROUTER_STATUS = "sop_ce_router_status_" + sourcePE + "_" + targetPE
    Temp_virtual_int = "sop_ce_virtual_interface_" + sourcePE + "_" + targetPE
    print(temp_looback)
    check_TempTableNames(temp_looback)
    check_TempTableNames(TEMP_ROUTER_STATUS)
    check_TempTableNames(Temp_virtual_int)

我的数据库:

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'Fileade',
        'HOST': '10.238.76.53',
        'USER': 'SDS_dataflow',
        'PASSWORD': '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',
        'PASSWORD': 'SDS_dataflow',

        'OPTIONS': {
            'driver': 'ODBC Driver 13 for SQL Server',
        }
}  

} 

追溯(最近一次调用):文件“C:\Users\Mohammed\Envs\TestEnv\lib\site-packages\django\core\handlers\exception.py”,第34行,在inner response=get_response(request)文件“C:\ Users\Mohmmed\Envs\TestEnv\lib\site packages\djangeo\core\handlers\fase.py”中,第126行,在_get_respense response\self中。process_exception_by_middleware(e,request)File“C:\Users\Mohammed\Envs\TestEnv\lib\site packages\django\core\handlers\base.py”,第124行,在_get_response response=wrapped_callback(request,*callback_args,**callback_kwargs)File“D:\College\Orange Training\MassiveMigrationPortalTool\posts\views.py”,第170行,在preStepBtn2 check_TempTableNames(temp_looback)File“D:\College\Orange Training\MassiveMigrationPortalTool\posts\views.py”的check_TmpTableNames光标的第147行。执行(“DROP TABLE%s;”,[tableName])文件“C:\Users\Mohammed\Envs\TestEnv\lib\site packages\django\db\backends\utils.py”,第100行,在execute return super()中。execute(sql,params)文件“C:\Users\Mohammed\Envs\TestEnv\lib\site-packages\django\db\backends\utils.py”,第68行,在execute return self中_execute_with_wrappers(sql,params,many=False,executor=self._execute)文件“C:\Users\Mohammed\Envs\TestEnv\lib\site-packages\django\db\backends\utils.py”,第77行,in_execute_the_wrappers-return-execute(sql、params、many、context)文件“C:\Users\穆罕默德\Envs\TestEnv\lib\site-pkages\djangeo\db\fackends\utils.py”,第85行,in-execute return self.cursor。execute(sql,params)File“C:\Users\Mohammed\Envs\TestEnv\lib\site-packages\django\db\utils.py”,第89行,在exit raise-dj_exc_value中。exc_value文件“C:\Users\Mohammed\Envs\TestEnv\lib\site packages\django\db\backends\utils.py”第85行的with_traceback(traceback),在_execute return self.cursor中。execute(sql,params)文件“C:\Users\Mohammed\Envs\TestEnv\lib\site-packages\sql_server\pyodbc\base.py”,第546行,在execute return self.cursor中。执行(sql,params)django.db.utils。编程错误:('42000',“[42000][Microsoft][ODBC Driver 13 for SQL Server][SQL Server]'@P1'附近语法不正确。(102)(SQLExecDirectW);[42000][Microsoft][CODBC Driver13 for SQL Server][SQL Server]语句无法准备。(8180)”)[02/Sep/2019 15:43:57]“GET/posts/preStepBtn2?targetInterFace=GE2/3/4

共有1个答案

寇甫
2023-03-14

占位符仅用于字段值,不能在DDL语句中使用它们。这里您必须使用纯字符串格式。。。

另外:

1/你绝对不想在GET请求上这样做。根据HTTP规范,GET请求必须是幂等的,这是有原因的(有一个著名的DailyWTF故事,关于每次googlebot启动时网站的数据库都会被删除…)。

2/你绝对不想信任用户数据,尤其是在数据库操作方面,当这些数据不能被db-api清理时,就更不信任了。使用django表单进行验证和清理,并确保执行操作的用户被允许删除那些确切的特定表。

哦,是的:“check_xxx”是一个非常糟糕的名字,它实际上删除了“xxx”。“cleantemptables”或类似的东西可能会使意图更清楚。

 类似资料:
  • 我正在使用notificationcompat.builder构建通知,我基本上遵循以下指南:http://developer.android.com/guide/topics/ui/notifiers/notifications.html 通知小图标是设计在Android状态栏中显示的小白唯一版本。 问题是,无论我做什么,相同的图标是用来指示原始应用程序的,我只是想隐藏它,因为我的应用程序图标也

  • 问题内容: 假设我使用以下光标获取某人的通话记录: 现在我将如何删除该光标中的第i个项目?这也可能是获取音乐等信息的光标。因此,我必须问-这是否可能?对于某些游标,我可以理解为不允许删除第三方应用程序。 谢谢。 问题答案: 对不起,您不能从光标中删除。 您必须使用ContentResolver或某种SQL调用。

  • 我无法删除下面显示的每个方框图下的标签“年龄”。它是自动生成的,无法摆脱它。以下是我的代码和输出: 在此处输入图像描述

  • 我正在努力研究models.cascade语句的正确用法。我有两种型号的购物车和入门车。如果删除条目,则不会更新购物车条目上的删除。我已经通过管理界面检查过了。我的models.py如下所示:

  • 问题内容: 我做了一个模型,然后运行python manage.py syncdb。我认为在数据库中创建了一个表。然后我意识到我错误地创建了一个列,因此我更改了它,并运行了相同的命令,以为它将删除旧表并添加一个新表。 然后,我转到python manage.py shell,并尝试运行.objects.all(),但失败了,并说该列不存在。 我想清除旧表,然后再次运行syncdb,但是我不知道该怎

  • 问题内容: 我正在Django中构建一个Web应用程序。我有一个上传文件的模型,但是无法删除它。这是我的代码: 然后,在“ python manage.py shell”中执行以下操作: 它从数据库中删除,但不删除服务器上的文件。我还能尝试什么? 问题答案: 在Django 1.3之前,当你删除相应的模型实例时,文件会自动从文件系统中删除。你可能正在使用较新的Django版本,因此你必须自己实现从