查询在sql server studio中运行,但在通过python pyodbc

时间:2018-01-03 22:22:24

标签: python sql-server

我有一个查询,我可以在Microsoft SQL Server Management Studio应用程序中成功运行。它按我的预期输出数据。

然而,当我尝试通过Python运行脚本时,它总是会抛出错误。

我首先创建了一个通用的sql reader函数:

def sql_reader_single(qry_file, server_name, database):
    server = db.connect(str('DRIVER={SQL Server};
                        SERVER='+server_name+';
                        DATABASE='+database+';'))
    qry = open(qry_file, 'r').read()
    data = pd.read_sql(qry, server)

return data

然后我尝试调用上面的函数来读取我的sql脚本:

dir = 'C:/Users/Documents/qry'
QryFile = os.path.join(dir, 'qry clean no comment.sql')
Data = sp.sql_reader_single(qry_file=QryFile, server_name='server1', database='db2')

当我调用read.sql()函数时,我总是会收到以下错误:

 ': ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'l'. (102) (SQLExecDirectW)")

' 1'是我的查询脚本中的最后一个字符。 所以错误信息是说我的脚本的最后一个字符附近有语法错误。

由于查询确实在SQL Server studio中成功运行,这消除了我的查询语法错误的假设,这是错误消息所暗示的。

这是我尝试运行的示例查询,但会收到以上错误代码:

SELECT  distinct 
                      [ShipmentId]
                     ,shipmentstatus
                  FROM shipmentstatus

我还通过Google搜索查看了许多其他链接,但我没有收到任何有用的提示。任何帮助表示赞赏!

0 个答案:

没有答案