代码之家  ›  专栏  ›  技术社区  ›  Matt Cottrill

SQL查询(用Python编写)返回错误

  •  0
  • Matt Cottrill  · 技术社区  · 7 年前

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

    ('42000','42000][Microsoft][ODBC SQL Server驱动程序][SQL 用作表值函数或 设置为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()
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Jacek Wróbel    7 年前

    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]")
    
        2
  •  0
  •   Zaynul Abadin Tuhin    7 年前

    我认为你的连接字符串不合适

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

    检查ODBC版本