我正在尝试从python执行一些SQL语句,但是在以下SQL行中遇到了问题:
将定义关闭;
其他SQL语句不存在此类问题。
def Querydf(command_str, dsn_str, username, pw):
#function outputs data as a pandas dataframe
conn = cx_Oracle.connect(user = username, password = pw, dsn=dsn_str)
cursor = conn.cursor()
cmd = command_str.split(";")
if (len(cmd)>1):
for i in cmd:
temp = i.replace("\n","")
print(temp)
cursor.execute(temp)
else:
cursor.execute(command_str)
Data = cursor.fetchall()
col_names = []
for i in range(0, len(cursor.description)):
col_names.append(cursor.description[i][0])
dataframe = pd.DataFrame(data = Data, columns = col_names)
cursor.close()
conn.close()
return dataframe
返回的错误是: cx_Oracle.DatabaseError:ORA-00922:缺少选项或选项无效
如果任何人都可以对此提供一些见解,那太好了,谢谢!
答案 0 :(得分:0)
命令“ set define off”不是SQL语句,而是SQL * Plus语句。因此,它只能在SQL * Plus中执行。由于cx_Oracle仅处理SQL语句,因此无论如何都不需要此命令!如果您正在读取的文件中包含通常由SQL * Plus运行的SQL语句,则需要将这些语句过滤掉。