python ORA-00933:SQL命令未正确结束,没有解释

wkftcu5l  于 2023-11-15  发布在  Python
关注(0)|答案(1)|浏览(179)

我尝试使用以下代码从Python中的Oracle DB读取:

  1. conn: SqlConnection
  2. # conn_info = DotenvSqlConnection.get_connection_info(add_env_to_connection_id(ConnectionList.Oracle, forced_env_type=EnvironmentType.Dev))
  3. conn_info = conn.get_connection_info(add_env_to_connection_id(ConnectionList.Oracle, forced_env_type=EnvironmentType.Dev))
  4. host_Or= conn_info.host
  5. service_or=conn_info.service
  6. user_id_or=conn_info.user
  7. password_or= conn_info.password
  8. port_or = conn_info.port
  9. print(host_Or, service_or, user_id_or, password_or, port_or)
  10. connection_string = f"{user_id_or}/{password_or}@{host_Or}:{port_or}/{service_or}"
  11. cnxn = cx_Oracle.connect(connection_string)
  12. cursor = cnxn.cursor()
  13. cursor = cnxn.cursor()
  14. table = 'myTable'
  15. account_query = f'''
  16. SELECT a.*
  17. FROM my_user.{table} a
  18. FETCH FIRST 4333 ROWS ONLY
  19. ORDER BY a.ACCNT_ID;
  20. '''
  21. cursor.execute(account_query)
  22. row = cursor.fetchone()
  23. # Print the count value (number of rows)
  24. if row:
  25. row_count = row[0]
  26. print("Number of rows:", row_count)
  27. else:
  28. print("No rows found.")

字符串
但我一直得到以下错误:

  1. ----> 9 cursor.execute(account_query)
  2. 10 row = cursor.fetchone()
  3. 12 # Print the count value (number of rows)
  4. DatabaseError: ORA-00933: SQL command not properly ended


我已经尝试了很多方法来解决它,但它不断出现。任何建议将是伟大的感谢!

qybjjes1

qybjjes11#

尝试重写查询。执行两个步骤:
首先(一般来说),删除终止分号:

  1. account_query = f'''
  2. SELECT a.*
  3. FROM my_user.{table} a
  4. FETCH FIRST 4333 ROWS ONLY
  5. ORDER BY a.ACCNT_ID; --> this one
  6. '''

字符串
其次,重写查询,使ORDER BY排在第一位,FETCH排在第二位:

  1. account_query = f'''
  2. SELECT a.*
  3. FROM my_user.{table} a
  4. ORDER BY a.ACCNT_ID
  5. FETCH FIRST 4333 ROWS ONLY
  6. '''

展开查看全部

相关问题