我已经研究过如何从python代码中运行.sql(例如execute *.sql file with python MySQLdb),但无法使其正常工作。在
下面是我的Python,它调用sql:
import arcpy, cx_Oracle
connection = cx_Oracle.connect('p760/123.abc@oraclebd01')
cursor = connection.cursor()
SDE = "C:\\Users\\david\\AppData\\Roaming\\ESRI\\Desktop10.1\\ArcCatalog\\p760.sde"
CodeSpace = r"G:\Projects\P760\Spatial_Processing\CODE\SQL\\"
fd = open(CodeSpace + 'run_pre_landbase_v1.sql', 'r')
sqlFile = fd.read()
fd.close()
sqlCommands = sqlFile.split(';')
for command in sqlCommands:
print command
try:
cursor.execute(command)
except:
print "Command skipped"
以下是我在Toad for Oracle中按F5时可以正常工作的SQL代码:
^{pr2}$我有点迷茫,不明白可能影响我使用python调用的所有因素。我以前用这个方法建立了连接,但在这些情况下,我运行了用python编写的代码行。这是我第一次尝试运行完整的SQL。在
由于您不想描述您的问题(请参阅我对“不起作用”作为问题描述的有用性的评论),我们只能猜测,但以下是三个明显缺失的步骤:
如果你的问题是“我没有异常,回溯或其他什么,但数据库没有更新”,那么1。很可能是罪魁祸首。在
另外,您的bare except子句确实无助于调试。您应该只捕获预期的异常(我不知道cxu Oracle可能会引发什么,但希望有文档记录),或者至少打印异常:
最后(不是双关语),您应该改进SQL文件的解析—跳过“/**/”注释部分,删除“comment”部分等
或者因为Oracle有一个命令行工具可以运行sql文件,所以可以用
os.system()
或子进程来运行它。。。在相关问题 更多 >
编程相关推荐