【发布时间】:2016-09-20 13:25:53
【问题描述】:
我正在同时学习 python 和 sql。 ;) 下面的 python 脚本调用一个 sql 脚本。我试图弄清楚如何从查询中获取输出以转到 csv。我已经做到了这一点:
#!/usr/bin/env python
import cx_Oracle
import sys
import csv
import os.path
import subprocess
con = cx_Oracle.connect('creden/tials@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(Host =server.work.net)(Port = 3453)))(CONNECT_DATA = (SID = SQLTEST)))')
cur=con.cursor()
f=open('/usr/local/src/sql/script_01.sql')
full_sql=f.read()
sql_commands=full_sql.split(";")
for sql_command in sql_commands:
cur.execute(sql_command)
# Here is where the magic should happen
# The output of above should go to the 'test_query' file
query_results = <OUTPUT OF FOR LOOP>
c=csv.writer(open("/home/user/sqlplus/test_query/test_query.csv","w"),delimiter=";",lineterminator="\r\n")
c.writerows(query_results)
cur.close()
谁能告诉我我错过了什么?
【问题讨论】:
-
由于我们无法访问您的 Oracle 数据库,因此我们看不到出了什么问题。
-
sql脚本运行正常,就是不知道怎么把cur.execute(sql_command)的返回结果直接传给csv。
-
您应该在每次执行某些操作时获取结果。因此,您可以在 for 循环中添加
results = cur.fetchall()和query_results.append(results)之类的内容。