sql 服务器未关闭引号,因为插入带有 's 的字符串
sql server unclosed quotation mark because insert a string with 's
我正在尝试将扩展属性写入 python 的 table 的每一列。
这是我的代码:
for i in dat.columns:
sql_query = """\
EXEC sys.sp_addextendedproperty
@name = N'Description',
@value = N'{}',
@level0type = N'Schema', @level0name = '{}',
@level1type = N'Table', @level1name = '{}',
@level2type = N'Column', @level2name = '{}'
""".format(dat[i][0], db, tb, i)
此处 dat[i][0] 包含每一列的描述。但是,其中一个描述类似于 balabalabala...student's program...balabalabal,描述中有一个 ' 并导致错误。
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Incorrect syntax near 's'. (102) (SQLExecDirectW); [42000] [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Unclosed quotation mark after the character string '\n '. (105)")
如何处理这个问题?
谢谢!
每当在 SQL 服务器中插入包含单引号字符的字符串时,请使用两个连续的单引号。在您的情况下,描述将是:
'Balabalabalabala... student''s program, balabalabala.'
请在您的代码中使用 CHAR(39) 而不是 '。
我正在尝试将扩展属性写入 python 的 table 的每一列。 这是我的代码:
for i in dat.columns:
sql_query = """\
EXEC sys.sp_addextendedproperty
@name = N'Description',
@value = N'{}',
@level0type = N'Schema', @level0name = '{}',
@level1type = N'Table', @level1name = '{}',
@level2type = N'Column', @level2name = '{}'
""".format(dat[i][0], db, tb, i)
此处 dat[i][0] 包含每一列的描述。但是,其中一个描述类似于 balabalabala...student's program...balabalabal,描述中有一个 ' 并导致错误。
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Incorrect syntax near 's'. (102) (SQLExecDirectW); [42000] [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Unclosed quotation mark after the character string '\n '. (105)")
如何处理这个问题?
谢谢!
每当在 SQL 服务器中插入包含单引号字符的字符串时,请使用两个连续的单引号。在您的情况下,描述将是:
'Balabalabalabala... student''s program, balabalabala.'
请在您的代码中使用 CHAR(39) 而不是 '。