python 连接oracle example

import NimbulaAPI
import cx_Oracle


class DBOperation:

    def __init__(self):
        pass
    @staticmethod
    def nimbula_api():
        api = NimbulaAPI.NimbulaAPI()
        return api

    @staticmethod
    def create_table_and_insert_data(ip, port, instance, username, password, insert_value):

        create_table = """
        CREATE TABLE dbaastable (
        test_value VARCHAR2(50) NOT NULL
        )"""

        drop_table = """
        BEGIN
           EXECUTE IMMEDIATE 'DROP TABLE dbaastable';
        EXCEPTION
           WHEN OTHERS THEN
              IF SQLCODE != -942 THEN
                 RAISE;
              END IF;
        END;
        """

        dsn_str = cx_Oracle.makedsn(ip, port, instance)
        con = cx_Oracle.connect(user=username, password=password, dsn=dsn_str)
        cursor = con.cursor()

        cursor.execute(drop_table)
        cursor.execute(create_table)

        query_string = "INSERT INTO dbaastable(test_value) VALUES ('" + insert_value + "')"
        # print query_string
        cursor.execute(query_string)

        con.commit()
        cursor.execute("SELECT test_value FROM dbaastable")
        result = cursor.fetchall()
        con.close()
        return result

    def is_oracle_readable_and_writable(self, dbaas_instance):
        username = 'system'
        password = 'xxxxx'
        port = '1521'
        instance = 'ORCL'
        insertvalue = 'test'

        dbaas_ip = self.nimbula_api().get_instance_ip(dbaas_instance)
        self.nimbula_api().permit_dbaas_access_seclist_if_not_permitted(dbaas_instance)
        result = self.create_table_and_insert_data(dbaas_ip, port, instance, username, password, insertvalue)
        print result

        if insertvalue in result[0]:
            print "get result success"
        else:
            raise Exception

    def is_oracle_not_readable_and_writable(self, dbaas_instance):
        username = 'system'
        password = 'xxxx'
        port = '1521'
        instance = 'ORCL'
        insertvalue = 'test'

        try:
            dbaas_ip = self.nimbula_api().get_instance_ip(dbaas_instance)
            self.nimbula_api().permit_dbaas_access_seclist_if_not_permitted(dbaas_instance)
            result = self.create_table_and_insert_data(dbaas_ip, port, instance, username, password, insertvalue)
            print result
            if insertvalue in result[0]:
                print 'value in table'
                raise Exception
            else:
                print "value not in table"
        except:
            raise Exception

  

转载于:https://www.cnblogs.com/alex777/p/6272530.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值