通过python

时间:2016-04-12 13:21:20

标签: python python-2.7

我希望运行位于test.sql驱动器上的文件夹中的以下C:。我一直在玩cx_Oracle并且无法让它发挥作用。

test.sql包含以下内容。

CREATE TABLE MURRAYLR.test
( customer_id number(10) NOT NULL,
  customer_name varchar2(50) NOT NULL,
  city varchar2(50)
);

CREATE TABLE MURRAYLR.test2
( customer_id number(10) NOT NULL,
  customer_name varchar2(50) NOT NULL,
  city varchar2(50)
);

这是我的代码:

import sys 
import cx_Oracle 
connection = cx_Oracle.connect('user,'password,'test.ora') 
cursor = connection.cursor() 
f = open("C:\Users\desktop\Test_table.sql")
full_sql = f.read() 
sql_commands = full_sql.split(';') 
for sql_command in sql_commands: 
  cursor.execute(sql_command)
  cursor.close() 
connection.close()

2 个答案:

答案 0 :(得分:1)

这个答案只有在你的test.sql文件包含新行'\ n \'字符时才有意义(就像我从复制粘贴你的sql代码中得到的那样)。您需要在代码中删除它们(如果它们存在)。要检查,请执行

print full_sql 

修复'\ n',

sql_commands = full_sql.replace('\n', '').split(';')[:-1]

以上应该有所帮助。

删除'\ n'并在拆分sql字符串时删除末尾的空字符串标记。

答案 1 :(得分:0)

在我使用过的任何DBMS中,

MURRAYLR.test都不是可接受的表名。 cx_oracle.connect返回的连接对象应该已经选择了一个模式。要切换到其他架构,请在连接对象上设置current_schema字段,或在sql文件中添加using <Schemaname>;。 显然要确保架构存在。

相关问题