欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

cx oracle 類型轉化

錢琪琛2年前8瀏覽0評論

Cx Oracle是Python數據庫編程的一個非常流行的模塊,它可以與Oracle數據庫進行非常方便的交互。在進行數據的讀取和寫入操作時,我們通常需要進行一些類型的轉換,才能使Python的數據類型和Oracle數據庫的數據類型匹配。在本文中,我們將通過大量的舉例介紹如何使用Cx Oracle進行常見的類型轉化。

1、Python類型轉化為Oracle類型

import cx_Oracle
con = cx_Oracle.connect('username/password@localhost/xe')  # 連接Oracle數據庫
cur = con.cursor()
# 創建表
cur.execute("CREATE TABLE test (name VARCHAR2(50), age NUMBER(3))")
# 數據插入
name = 'Jerry'
age = 25
cur.execute("INSERT INTO test VALUES (:name, :age)", [name, age])
con.commit()
cur.close()
con.close()

在向Oracle數據庫中插入數據時,列表或元組常常是一種非常方便的數據結構。但是,列表或元組中包含Python數據類型,如果直接插入這些數據類型到Oracle數據庫中,會報錯。因此,在使用Cx Oracle時,我們需要將Python的數據類型轉化為相應的Oracle數據類型。

1.1 Python int 轉 Oracle NUMBER(3):

import cx_Oracle
con = cx_Oracle.connect('username/password@localhost/xe')  # 連接Oracle數據庫
cur = con.cursor()
# 創建表
cur.execute("CREATE TABLE test (age NUMBER(3))")
# 數據插入
age = 25
cur.execute("INSERT INTO test VALUES (:age)", [int(age)])
con.commit()
cur.close()
con.close()

1.2 Python str 轉 Oracle VARCHAR2(50):

import cx_Oracle
con = cx_Oracle.connect('username/password@localhost/xe')  # 連接Oracle數據庫
cur = con.cursor()
# 創建表
cur.execute("CREATE TABLE test (name VARCHAR2(50))")
# 數據插入
name = 'Jerry'
cur.execute("INSERT INTO test VALUES (:name)", [str(name)])
con.commit()
cur.close()
con.close()

1.3 Python list 轉 Oracle varray:

import cx_Oracle
con = cx_Oracle.connect('username/password@localhost/xe')  # 連接Oracle數據庫
cur = con.cursor()
# 創建表
cur.execute("CREATE TYPE odd_numbers AS VARRAY(10) OF NUMBER(3)")  # 創建varray數據類型
cur.execute("CREATE TABLE test (nums odd_numbers)")  # 創建表
# 數據插入
nums = [1, 3, 5, 7, 9]
cur.execute("INSERT INTO test VALUES (:nums)", [cur.arrayvar(cx_Oracle.NUMBER, nums)])
con.commit()
cur.close()
con.close()

2、Oracle類型轉化為Python類型

import cx_Oracle
con = cx_Oracle.connect('username/password@localhost/xe')  # 連接Oracle數據庫
cur = con.cursor()
# 創建表
cur.execute("CREATE TABLE test (name VARCHAR2(50), age NUMBER(3))")
# 數據插入
name = 'Jerry'
age = 25
cur.execute("INSERT INTO test VALUES (:name, :age)", [name, age])
cur.execute("SELECT * FROM test WHERE name=:name", {'name': 'Jerry'})
res = cur.fetchone()
print(res[0], res[1])  # 輸出Jerry 25

在從Oracle數據庫中讀取數據時,我們需要將Oracle數據類型轉化為Python數據類型,以便于后續的處理。

2.1 Oracle VARCHAR2(50) 轉 Python str:

import cx_Oracle
con = cx_Oracle.connect('username/password@localhost/xe')  # 連接Oracle數據庫
cur = con.cursor()
# 創建表
cur.execute("CREATE TABLE test (name VARCHAR2(50))")
# 數據插入
name = 'Jerry'
cur.execute("INSERT INTO test VALUES (:name)", [name])
cur.execute("SELECT * FROM test WHERE name=:name", {'name': 'Jerry'})
res = cur.fetchone()
print(str(res[0]))  # 輸出Jerry

2.2 Oracle NUMBER(3) 轉 Python int:

import cx_Oracle
con = cx_Oracle.connect('username/password@localhost/xe')  # 連接Oracle數據庫
cur = con.cursor()
# 創建表
cur.execute("CREATE TABLE test (age NUMBER(3))")
# 數據插入
age = 25
cur.execute("INSERT INTO test VALUES (:age)", [age])
cur.execute("SELECT * FROM test WHERE age=:age", {'age': 25})
res = cur.fetchone()
print(int(res[0]))  # 輸出25

2.3 Oracle varray 轉 Python list:

import cx_Oracle
con = cx_Oracle.connect('username/password@localhost/xe')  # 連接Oracle數據庫
cur = con.cursor()
# 創建表
cur.execute("CREATE TYPE odd_numbers AS VARRAY(10) OF NUMBER(3)")  # 創建varray數據類型
cur.execute("CREATE TABLE test (nums odd_numbers)")  # 創建表
# 數據插入
nums = [1, 3, 5, 7, 9]
cur.execute("INSERT INTO test VALUES (:nums)", [cur.arrayvar(cx_Oracle.NUMBER, nums)])
cur.execute("SELECT * FROM test")
res = cur.fetchone()
nums = res[0].aslist()
print(nums)  # 輸出[1, 3, 5, 7, 9]

通過以上的例子,我們可以看到Cx Oracle在進行類型轉化時非常方便,只需要使用一些簡單的函數和參數即可實現。由于類型轉化在數據庫編程中非常常見,因此,在編寫Python與Oracle交互的代碼時,我們需要時刻注意數據類型的匹配。