为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

泛舟湖上清波郎朗 2021-07-02 10:00:03
问题是我在 SQL 命令中需要一个不存在的空格。其他一些用户建议我使用了一些不好的语法,这也可能是真的,但现在一切都已经设置好了。我的查询在 .dqy 文件或 microsoft sql studio 中工作正常,但是当我尝试在 Python 中运行它时出现此错误:('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]"RMORHP" 不是可识别的表提示选项。如果它旨在作为表值函数或 CHANGETABLE函数,请确保您的数据库兼容模式设置为 90。(321) (SQLExecDirectW)')我不确定这意味着什么或如何调整我的脚本。我想我在某个地方打了一个坏电话,但我不知道在哪里。数据库本身是一个企业解决方案,所以我需要更改我的查询,而不是数据库。代码:import pyodbcimport pandas as pdcnxn = 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 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

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

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

检查您的 ODBC 版本


查看完整回答
反对 回复 2021-07-13
  • 2 回答
  • 0 关注
  • 183 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信