Python 尝试在 sql 服务器中删除或创建 table
Python try except to drop or create table in sql server
我正在使用 pyodbc 创建或删除 table。如果 table 已经存在,我写了一个函数来删除 table。请看下面我的语法
try:
cur.execute('Drop table {}'.format(table_name))
except ProgrammingError:
cur.execute(create_table)
但是,我收到错误消息:
<ipython-input-79-fe0fe29a1e8e> in upload_to_SQL(file_name, skiprows, table_name)
26 try:
27 cur.execute('Drop table {}'.format(table_name))
--->28 except ProgrammingError:
29 cur.execute(create_table)
30
NameError: name 'ProgrammingError' is not defined
我确认 ProgrammingError 是我删除 sql 服务器中不存在的 table 时的错误消息。任何人都知道如何修改这个?
您得到的异常是 NameError
,因为 ProgrammingError
未在当前范围内定义。 Exceptions
与 python 中的其他所有对象一样都是对象,您必须从正确的位置导入或引用它们。
你可能想做
try:
cur.execute('Drop table {}'.format(table_name))
except pyodbc.ProgrammingError:
cur.execute(create_table)
正如@Brendan Abel 所建议的,您的异常 ProgrammingError
超出了范围。做一个 import
像 :
from pyodbc import ProgrammingError
或
pyodbc.ProgrammingError
。稍微更改一下您的查询也很好:
"DROP TABLE IF EXISTS {}".format(self.table_name)
这是来自 pyodbc
文档的列表 exceptions。
我正在使用 pyodbc 创建或删除 table。如果 table 已经存在,我写了一个函数来删除 table。请看下面我的语法
try:
cur.execute('Drop table {}'.format(table_name))
except ProgrammingError:
cur.execute(create_table)
但是,我收到错误消息:
<ipython-input-79-fe0fe29a1e8e> in upload_to_SQL(file_name, skiprows, table_name)
26 try:
27 cur.execute('Drop table {}'.format(table_name))
--->28 except ProgrammingError:
29 cur.execute(create_table)
30
NameError: name 'ProgrammingError' is not defined
我确认 ProgrammingError 是我删除 sql 服务器中不存在的 table 时的错误消息。任何人都知道如何修改这个?
您得到的异常是 NameError
,因为 ProgrammingError
未在当前范围内定义。 Exceptions
与 python 中的其他所有对象一样都是对象,您必须从正确的位置导入或引用它们。
你可能想做
try:
cur.execute('Drop table {}'.format(table_name))
except pyodbc.ProgrammingError:
cur.execute(create_table)
正如@Brendan Abel 所建议的,您的异常 ProgrammingError
超出了范围。做一个 import
像 :
from pyodbc import ProgrammingError
或
pyodbc.ProgrammingError
。稍微更改一下您的查询也很好:
"DROP TABLE IF EXISTS {}".format(self.table_name)
这是来自 pyodbc
文档的列表 exceptions。