#python #sql #sql-server #pymssql
Вопрос:
Я получаю ошибку ниже всякий раз, когда пытаюсь создать нового пользователя в базе данных.
Traceback (most recent call last):
File "srcpymssql_pymssql.pyx", line 460, in pymssql._pymssql.Cursor.execute
File "srcpymssql_mssql.pyx", line 1104, in pymssql._mssql.MSSQLConnection.execute_query
File "srcpymssql_mssql.pyx", line 1135, in pymssql._mssql.MSSQLConnection.execute_query
File "srcpymssql_mssql.pyx", line 1268, in pymssql._mssql.MSSQLConnection.format_and_run_query
File "srcpymssql_mssql.pyx", line 1806, in pymssql._mssql.check_cancel_and_raise
File "srcpymssql_mssql.pyx", line 1852, in pymssql._mssql.raise_MSSQLDatabaseException
pymssql._mssql.MSSQLDatabaseException: (102, b"Incorrect syntax near 'CREATE USER [test_login] FOR LOGIN [test_login] WITH DEFAULT_SCHEMA=[dbo]'.DB-Lib error message 20018, severity 15:nGeneral SQL Server error: Check messages from the SQL Servern")
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "test_sqlserver.py", line 60, in <module>
createUsers(row[0][:-1], target_server, target_database)
File "test_sqlserver.py", line 44, in createUsers
cursor.execute('%s', sqlStatement)
File "srcpymssql_pymssql.pyx", line 475, in pymssql._pymssql.Cursor.execute
pymssql._pymssql.ProgrammingError: (102, b"Incorrect syntax near 'CREATE USER [test_login] FOR LOGIN [test_login] WITH DEFAULT_SCHEMA=[dbo]'.DB-Lib error message 20018, severity 15:nGeneral SQL Server error: Check messages from the SQL Servern")
Ниже приведен мой код в настоящее время.
def createUsers(sqlStatement, server, database):
conn = pymssql.connect(server=server, database=database)
cursor = conn.cursor()
cursor.execute('%s', sqlStatement)
target_server = 'MYServer'
target_database = 'MYDatabase'
sqlStatement = 'CREATE USER [test_login] FOR LOGIN [test_login] WITH DEFAULT_SCHEMA=[dbo]'
createUsers(sqlStatement, target_server, target_database)
Я не уверен, почему я получаю эту ошибку, так как я могу выполнить инструкцию SQL непосредственно в базе данных без каких-либо проблем. И я также могу использовать pymssql для запроса информации из базы данных. Но всякий раз, когда я пытаюсь создать нового пользователя в базе данных, я продолжаю получать эту ошибку. Кто-нибудь знаком с этим?
Ответ №1:
Проблема была решена после изменения инструкции cursor.execute на приведенную ниже
cursor.execute(sqlStatement)
Мне также пришлось добавить нижеприведенную фиксацию, иначе изменения не были видны на стороне базы данных.
conn.commit()