我正试图使用pyodbc从ms-sql服务器获取数据。我得到以下错误:
编程错误:('42000','[42000][Microsoft][ODBC SQL Server驱动程序][SQL Server]SQL语句的某些部分也嵌套了深深地重写查询或将其分解为更小的查询。(191)(SQLExecDirectW)')
代码如下:
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=127.0.0.1;DATABASE=Morphemes;')
cursor = conn.cursor()
Func = list()
sql_VerbDecl = "SELECT (stem_.kök + conj_.suffix) as tokenn FROM TBL_Stem as stem_ INNER JOIN TBL_VerbDecl as conj_ on conj_.node = stem_.node;"
cursor.execute(sql_VerbDecl)
rows = cursor.fetchall()
问题是unicode问题。当我把stem_kök改成stem_kok时,问题解决了。
您不需要任何"AS废话"。尝试完全相同的代码,除了sql_VerbDecl="SELECT 1;",看看是否会出现相同的错误。试试这个,它可能不是确切的语法,但你应该了解SELECT "TBL_Stem.kök", "TBL_VerbDecl.suffix" FROM "TBL_Stem" INNER JOIN "TBL_VerbDecl" ON "TBL_Stem".node = "TBL_VerbDecl".node;
参考:http://www.w3schools.com/sql/sql_join_inner.asp关于如何INNER JOIN。此外,只要表名或表列包含大写,就需要将其括在"中,否则SQL就不知道它是大写的。