【问题标题】:Creating stored procedure in MS SQL through pyodbc通过 pyodbc 在 MS SQL 中创建存储过程
【发布时间】:2018-12-16 08:23:57
【问题描述】:

我正在尝试通过 python 代码在 mssql 中的 master 中创建一个存储过程。以下是我的代码:

import pyodbc

conn = pyodbc.connect("driver={SQL Server};server=localhost; database=master; trusted_connection=true",
                      autocommit=True) 
cursor = conn.cursor()
sqlcommand = """
                USE master
                GO
                CREATE PROCEDURE sp_myCustomSystemProc
                AS
                BEGIN
                    PRINT 'myCustomCode'
                END
                GO
                EXEC sp_ms_marksystemobject 'sp_myCustomSystemProc'
             """     
cursor.execute(sqlcommand)

cursor.commit()

conn.commit()

运行此 python 代码后,我收到此错误:

Traceback(最近一次调用最后一次):

File "auto_complete.py", line 27, in <module>
  cursor.execute(sqlcommand)  
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]
Incorrect syntax near 'GO'. (102) (SQLExecDirectW); 
[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]
'CREATE/ALTER PROCEDURE' must be the first statement in a query batch. (111); 
[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]
Incorrect syntax near 'GO'. (102); 
[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]
Incorrect syntax near 'sp_myCustomSystemProc'. (102)")

谁能帮我解决这个问题?

【问题讨论】:

    标签: python sql-server stored-procedures pyodbc


    【解决方案1】:

    由于您的连接字符串已经指定了master 数据库(即database=master;),只需删除

    USE master
    GO
    

    来自您的查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      • 2011-03-18
      • 2019-09-13
      相关资源
      最近更新 更多