亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Oracle數據庫Python連接方法

系統 2186 0

Connecting Python to Oracle Cloud Database

There are three flavors of Oracle Databases hosted on Oracle Cloud Infrastructure:

  1. Bare Mental, VM, and Exadata
  2. Autonomous Data Warehouse (ADWC)
  3. Autonomous Transaction Processing

Here we are refering "Oracle database" to Autonomous Data Warehouse, while all three should be similar in connectivity interface as they are Oracle-like.

For those of you who don't have an Oracle cloud account, be reminded that you can apply for a free-trial account with 30-day trial period and $3000 HKD usable balance.

Before you begin

Before we discuss how to access Oracle database from Python, you should have already provisioned an Autonomous Data Warehouse instance. Refer to official doc for how to provision. Basically, you need to first construct a VCN (Virtual Cloud Network) under Networking tag, as later you'll be prompted to bind your ADWC to one of the VCNs. In the startup dialog of provisioning the ADWC, choose storage and other parameters, set up your ADMIN account, etc.

Wait for the ADWC instance (in my case, it is called demo ) to turn from Provising is in Available state, enter the details page, and enter DB Connection page. From the Download button, download the client credentials (a.k.a. your wallet**). The wallet is very important and you will need it to make client connections via any method (SQLDeveloper, Language driver, etc).

Install Oracle Client and Python driver

To make connections to Oracle database, you need an Oracle client. Oracle client can a full one that takes a lot of space, or a light-weight one, Instant Client . Because a full client is not available on macOS, I opt for the Instant Client. Download the zip file of proper DB version and OS, and place it in your workspace

          
            cd ~/Downloads
unzip instantclient-basic-macos.x64-18.1.0.0.0.zip
cd instantclient_18_1
          
        

We will also need the Python driver cx_Oracle . I recommend using PyPI

          
            python -m pip install cx_Oracle --upgrade
          
        

instantclient_18_1 directory has the dynamic libraries required by cx_Oracle , they must be on the Library Search Path in macOS dynamic linking process, available for the dlpen call from cx_Oracle .

…, the dynamic loader searches for the library in several locations until it finds it, in the following order:

  1. $LD_LIBRARY_PATH
  2. $DYLD_LIBRARY_PATH
  3. The process’s working directory
  4. $DYLD_FALLBACK_LIBRARY_PATH

Hence, we have several options, such as work in the instantclient_18_1 directory. Or, create a symbol link in DYLD_FALLBACK_LIBRARY_PATH which has a default value $HOME/lib;/usr/local/lib;/usr/lib . The second method is more flexible since we don't have to stay in the client directory forever

          
            ln -s ~/Downloads/instantclient_18_1/libclntsh.dylib ~/lib/
          
        

Configure Oracle database TNS

TNS stands for Transparent Network Substrate , an Oracle computer-networking technology mainly designed for connection to Oracle databases. We need to tell the Instant Client the TNS information of the database we would like to access.

          
            cd ~/Downloads/instantclient_18_1/network/admin
          
        

If there is not network/admin inside, mkdir the subdirectories.

Unzip the wallet files to network/admin

          
            unzip ~/Downloads/Wallet_demo.zip .
ls
# README           ewallet.p12      ojdbc.properties tnsnames.ora
# cwallet.sso      keystore.jks     sqlnet.ora       truststore.jks
          
        

There are a bunch of files in the wallet, but only three of them is required to make the connection (though you can always put all files inside network/admin ). tnsnames.ora defines the namespace of where to find the databases (host, portnumber, service name) when cx_Oracle is asked to make a connection.

          
            cat tnsnames.ora
          
        
          
            demo_high = (description= (address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=lsd2p1z0t6mcrz2_demo_high.adwc.oraclecloud.com))(security=(ssl_server_cert_dn=
        "CN=adb.ap-tokyo-1.oraclecloud.com,OU=Oracle ADB TOKYO,O=Oracle Corporation,L=Redwood City,ST=California,C=US"))   )
# ...
          
        

There are other TNS entry points, like demo_medium and demo_low , they refer to different volumes of data transfer between the client and the database.

Get to the Python part

We are all set, lets create a python script with the following content:

          
            import cx_Oracle

connection = cx_Oracle.connect('
            
              ', '
              
                ', 'demo_high')
print('Database version:', connection.version)
connection.close()
              
            
          
        

If the script terminates with any error, you will see output

          
            (base) ?  Desktop python connection.py
Database version: 18.4.0.0.0
          
        

Then we successfully connect to the database.

Note: the third parameter of cx_Oracle.connect should one of the names defined in tnsnames.ora like demo_high , demo_HIGH (TNS name is case-insensitive), NOT the long connection string (something starting with adb.ap-tokyo-1.oraclecloud.com ). If you mistakenly use the connection string as the third parameter, you are likely to end up with error TNS: connection closed .


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产欧美一区二区另类精品 | 成人欧美精品久久久久影院 | 成人欧美一区二区三区黑人妖 | 欧美特黄a级高清免费大片 欧美特黄a级猛片a级 | 午夜国产精品福利在线观看 | 神马影院888不卡院 神马影院不卡不卡在线观看 | 色 在线播放 | 亚洲无限看 | 一级a俄罗斯毛片免费 | 6080一级毛片 | 日日摸天天添天天添破 | 国产大陆亚洲精品国产 | 免费一级成人毛片 | 国产在线精品香蕉综合网一区 | 亚洲第一综合色 | 狠狠色丁香婷婷综合欧美 | 亚洲精品不卡久久久久久 | 亚洲欧美日韩在线精品2021 | 久久久久久久综合色一本 | 亚洲国产中文在线 | 欧美日韩不卡中文字幕在线 | 色六月丁香 | 在线观看日本免费视频大片一区 | 欧美精品成人 | 国内精品伊人久久大香线焦 | 夜夜操美女 | 狠狠色丁香婷婷久久综合不卡 | 久九九久福利精品视频视频 | 久久久久在线视频 | 久久久久久国产精品免费免 | 精品一区二区三区在线观看视频 | 国产91久久久久久久免费 | 国产极品白嫩美女在线观看看 | 何以笙箫默在线观看 | 国产成人久久精品二区三区 | 四虎欧美在线观看免费 | aaaaaa国产毛片孕妇版 | 男人的天堂免费在线观看 | 99这里有精品视频 | 91香蕉嫩草 | 色菇凉天天综合网 |