sql server未关闭引号,因为插入带有的字符串

时间:2018-10-16 17:49:43

标签: 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', @level0name = '{}',
                     @level1type = N'Table',  @level1name = '{}',
                     @level2type = N'Column', @level2name = '{}'
                """.format(dat[i][0], db, tb, i)

此处dat [i] [0]包含每列的描述。但是,描述之一就像balabalabala ...学生的程序... 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)")

如何处理此问题?

谢谢!

2 个答案:

答案 0 :(得分:2)

请在代码中使用CHAR(39)代替'。

答案 1 :(得分:1)

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

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