Sql server sql server未关闭引号,因为插入带';s

Sql server sql server未关闭引号,因为插入带';s,sql-server,pyodbc,quotation-marks,Sql Server,Pyodbc,Quotation Marks,我试图从python向表的每一列写入扩展属性。 这是我的密码: for i in dat.columns: sql_query = """\ EXEC sys.sp_addextendedproperty @name = N'Description', @value = N'{}', @level0type = N'Schema',

我试图从python向表的每一列写入扩展属性。 这是我的密码:

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]包含每列的说明。然而,其中一个描述类似于Balabala…学生的程序…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 Server中插入包含单引号字符的字符串时,请使用两个连续的单引号。在您的情况下,描述如下:

'Balabalabalabala... student''s program, balabalabala.'

每当在SQL Server中插入包含单引号字符的字符串时,请使用两个连续的单引号。在您的情况下,描述如下:

'Balabalabalabala... student''s program, balabalabala.'

请在代码中使用CHAR(39)而不是“请在代码中使用CHAR(39)”而不是“请在代码中使用CHAR(39)”。

Python处理这项工作的常用方法不是吗?每当我在SQL Server中插入包含单引号字符的字符串时,我都会使用两个连续的单引号。在您的情况下,描述将是
balabala。。。学生计划,巴拉。
如果有帮助,请告诉我。@Brian工作得很好。在这里解决这个问题。我将投票表决并作出答复。:)非常感谢。在SQL Server中插入包含单引号字符的字符串时,我会使用两个连续的单引号。在您的情况下,描述将是
balabala。。。学生计划,巴拉。
如果有帮助,请告诉我。@Brian工作得很好。在这里解决这个问题。我将投票表决并作出答复。:)非常感谢。奇怪的是,为什么您建议使用
Char(39)
(39是单引号的ASCII码)而不是单引号字符本身?您的情况非常简单。但是,如果您有复杂字符串、连接或动态sql的使用方法,我强烈建议使用char(39),以使代码更可读、更安全。而且,有时使用N级单引号是不可能解决问题的。为什么建议使用
Char(39)
(39是单引号的ASCII码)而不是单引号本身?您的情况非常简单。但是,如果您有复杂字符串、连接或动态sql的使用方法,我强烈建议使用char(39),以使代码更可读、更安全。有时,使用N级单引号解决问题是不可能的