SQL Python 中的查询格式

SQL query formatting in Python

我想查询我的 Oracle 数据库,但它不工作。我想我在格式上遗漏了一些东西但无法弄清楚。 如果我在 SQL 开发人员中执行相同的查询,它会返回结果。但是在 Python 中它给出了 'SyntaxError: invalid syntax.' 错误。

import os
import cx_Oracle
import matplotlib.pyplot as plt
import numpy as np

dsn_tns = cx_Oracle.makedsn('host', '1521', service_name='S1') 
conn = cx_Oracle.connect(user=r'dev_user', password='Welcome', dsn=dsn_tns) 


reportid_count = []
count_ID =  []

c = conn.cursor()

query = 'select distinct (LTRIM(REGEXP_SUBSTR(ID, '[0-9]{3,}'), '0')) as ReportID,count(ID) from dev_user.RECORD_TABLE  group by ID'
c.execute(query) 


#loop through the rows fetched and store the records as arrays.
for row in c:
    reportid_count.append(row[0] + ',' + str(row[1]))
    count_ID.append(row[1])

for s in reportid_count:
    print(s)

如果您使用 GROUP BY,则不必使用 DISTINCT,因为前者已经确保您将获得不同的结果。此外,您可能希望按整个 select 表达式(ltrim...)分组,而不仅仅是 id,即

SELECT ltrim(regexp_substr(id, '[0-9]{3,}'), '0') AS reportid,
       COUNT(id)
FROM dev_user.record_table
GROUP BY ltrim(regexp_substr(id, '[0-9]{3,}'), '0')

你终于说了

in Python it's giving error.

哪个错误?

在 Python 方面,您需要删除嵌入的引号。尝试使用:

query = """select distinct (LTRIM(REGEXP_SUBSTR(ID, '[0-9]{3,}'), '0')) as ReportID,count(ID) from dev_user.RECORD_TABLE  group by ID"""