SQL查询(用Python编写)返回

2024-10-02 10:19:14 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑:问题是我在SQL命令中需要一个不存在的空间。其他一些用户建议我使用了一些错误的语法,这也可能是真的,但现在已经设置好了。在

我的查询在.dqy文件或microsoft sql studio中运行良好,但当我尝试在Python中运行它时,它会显示以下错误:

('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]"RMORHP" is not a recognized table hints option. If it is intended as a parameter to a table-valued function or to the CHANGETABLE function, ensure that your database compatibility mode is set to 90. (321) (SQLExecDirectW)')

我不知道这意味着什么,也不知道如何调整我的剧本。我想我在某个地方打了个坏电话,但我不知道在哪里。数据库本身是一个企业解决方案,所以我需要更改我的查询,而不是数据库。在

代码:

import pyodbc
import pandas as pd
cnxn = pyodbc.connect("Driver=SQL Server;"
                      "Server=server;"
                      "Database=database;"
                      "Trusted_Connection=yes;"
                      "APP=Microsoft Office 2010")
#cursor = cnxn.cursor()
SQLCommand =("SELECT DISTINCT CONCAT(RMORHP.ORHCUSCHN, '-', RMORHP.ORHCUSNUM) As 'Customer Number', RMCUSP.CUSCUSNAM As 'Customer Name', RMORHP.ORHDELDTE As 'Delivery Date', Count(RMORHP.ORHORDNUM) As 'Order Count'"
             "FROM BIDW_DataLake.erms.RMORHP RMORHP, BIDW_DataLake.eRMS.RMCUSP RMCUSP"
             "WHERE (RMORHP.ORHDELDTE Between 20181010 And 20181011) AND RMORHP.ORHORDQTY > 0 AND RMCUSP.CUSCUSCHN = RMORHP.ORHCUSCHN AND RMCUSP.CUSCUSNUM = RMORHP.ORHCUSNUM AND RMCUSP.CUSDFTDCN = 505"
             "GROUP BY CONCAT(RMORHP.ORHCUSCHN, '-', RMORHP.ORHCUSNUM), RMCUSP.CUSCUSNAM, RMORHP.ORHDELDTE"
             "ORDER BY [Delivery Date], [Customer Number]")
df = pd.read_sql_query(SQLCommand, cnxn)
#cursor.execute(SQLCommand)
#for row in cursor:
#    print('row = %r' % (row,))
cnxn.close()

Tags: andtosqlserverisascustomercursor
2条回答

我认为你的连接线不合适

conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};
       SERVER=test;
       DATABASE=test;
       UID=user;
       PWD=password')

检查您的ODBC版本

SQLCommand每行之间缺少空格,这可能会触发错误。我在第2行到第5行的“后面加了空格。在

SQLCommand =("SELECT DISTINCT CONCAT(RMORHP.ORHCUSCHN, '-', RMORHP.ORHCUSNUM) As 'Customer Number', RMCUSP.CUSCUSNAM As 'Customer Name', RMORHP.ORHDELDTE As 'Delivery Date', Count(RMORHP.ORHORDNUM) As 'Order Count'"
             " FROM BIDW_DataLake.erms.RMORHP RMORHP, BIDW_DataLake.eRMS.RMCUSP RMCUSP"
             " WHERE (RMORHP.ORHDELDTE Between 20181010 And 20181011) AND RMORHP.ORHORDQTY > 0 AND RMCUSP.CUSCUSCHN = RMORHP.ORHCUSCHN AND RMCUSP.CUSCUSNUM = RMORHP.ORHCUSNUM AND RMCUSP.CUSDFTDCN = 505"
             " GROUP BY CONCAT(RMORHP.ORHCUSCHN, '-', RMORHP.ORHCUSNUM), RMCUSP.CUSCUSNAM, RMORHP.ORHDELDTE"
             " ORDER BY [Delivery Date], [Customer Number]")

相关问题 更多 >

    热门问题