我希望运行位于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()
答案 0 :(得分:1)
这个答案只有在你的test.sql文件包含新行'\ n \'字符时才有意义(就像我从复制粘贴你的sql代码中得到的那样)。您需要在代码中删除它们(如果它们存在)。要检查,请执行
print full_sql
修复'\ n',
sql_commands = full_sql.replace('\n', '').split(';')[:-1]
以上应该有所帮助。
删除'\ n'并在拆分sql字符串时删除末尾的空字符串标记。
答案 1 :(得分:0)
MURRAYLR.test
都不是可接受的表名。 cx_oracle.connect
返回的连接对象应该已经选择了一个模式。要切换到其他架构,请在连接对象上设置current_schema
字段,或在sql文件中添加using <Schemaname>;
。
显然要确保架构存在。