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"""
我想查询我的 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"""