Kết nối ldap python cx_oracle

Hướng dẫn này giới thiệu về cách sử dụng Python với Cơ sở dữ liệu Oracle. Nó chứa tài liệu dành cho người mới bắt đầu và nâng cao. Các phần có thể được thực hiện theo thứ tự bất kỳ. Chọn nội dung mà bạn quan tâm và trình độ kỹ năng của bạn. Hướng dẫn có các tập lệnh để chạy và sửa đổi, đồng thời có các giải pháp được đề xuất

Python là một ngôn ngữ kịch bản động có mục đích chung phổ biến. Giao diện cx_Oracle cung cấp API Python để truy cập Cơ sở dữ liệu Oracle

Nếu bạn chưa quen với Python, hãy xem lại Phụ lục. Python Primer để hiểu ngôn ngữ

Khi bạn hoàn thành hướng dẫn này, chúng tôi khuyên bạn nên xem lại tài liệu cx_Oracle

Bản gốc của những hướng dẫn mà bạn đang đọc ở đây

Các chương trình Python gọi các hàm cx_Oracle. Nội bộ cx_Oracle tải động các thư viện Máy khách Oracle để truy cập Cơ sở dữ liệu Oracle. Cơ sở dữ liệu có thể trên cùng một máy với Python hoặc có thể ở xa. Nếu cơ sở dữ liệu là cục bộ, có thể sử dụng các thư viện máy khách từ cài đặt phần mềm Cơ sở dữ liệu Oracle

  • cài đặt phần mềm

    Để bắt đầu, hãy làm theo một trong các hướng dẫn bắt đầu nhanh

    Đối với hướng dẫn này, bạn sẽ cần Python 3. 6 [hoặc mới hơn], cx_Oracle 7. 3 [hoặc mới hơn] và quyền truy cập vào Cơ sở dữ liệu Oracle

    Phần Xếp hàng nâng cao yêu cầu Python cx_Oracle đang sử dụng thư viện máy khách Oracle 12. 2 hoặc muộn hơn. Phần SODA yêu cầu Cơ sở dữ liệu Oracle 18 trở lên và Python cx_Oracle phải sử dụng các thư viện Oracle từ 18. 5 trở lên

  • Tải xuống các kịch bản hướng dẫn

    Các tập lệnh Python được sử dụng trong ví dụ này nằm trong kho lưu trữ cx_Oracle GitHub

    Tải xuống một tệp zip của kho lưu trữ từ đây và giải nén nó. Ngoài ra, bạn có thể sử dụng 'git' để sao chép kho lưu trữ bằng

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    38

    Thư mục

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    39 có các tập lệnh để chạy và sửa đổi. Thư mục
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    40 có các tập lệnh với các thay đổi mã được đề xuất

  • Tạo người dùng cơ sở dữ liệu

    Nếu bạn hiện có người dùng, bạn có thể sử dụng nó cho hầu hết các ví dụ [một số ví dụ có thể yêu cầu thêm quyền]

    Nếu bạn cần tạo người dùng mới, hãy xem lại các khoản trợ cấp được tạo trong

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    41. Sau đó, mở một cửa sổ đầu cuối, thay đổi thư mục
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    42 và chạy tập lệnh
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    43 với tư cách là người dùng HỆ THỐNG chẳng hạn

    cd samples/tutorial/sql
    sqlplus -l system/systempassword@localhost/orclpdb1 @create_user
    

    Ví dụ trên kết nối với tư cách là người dùng HỆ THỐNG. Chuỗi kết nối là "localhost/orclpdb1", nghĩa là sử dụng dịch vụ cơ sở dữ liệu "orclpdb1" chạy trên localhost [máy tính mà bạn đang chạy SQL*Plus]. Giá trị thay thế cho môi trường của bạn. Nếu bạn đang sử dụng Cơ sở dữ liệu tự trị của Oracle, hãy sử dụng người dùng ADMIN thay vì HỆ THỐNG

    Khi hướng dẫn kết thúc, tập lệnh

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    44 trong cùng thư mục có thể được sử dụng để xóa người dùng hướng dẫn

  • Cài đặt các bảng mẫu

    Khi bạn có người dùng cơ sở dữ liệu, thì bạn có thể tạo các bảng hướng dẫn bằng cách chạy một lệnh như thế này, sử dụng các giá trị của bạn cho tên người dùng, mật khẩu và chuỗi kết nối của hướng dẫn

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
  • Bắt đầu nhóm kết nối thường trú cơ sở dữ liệu [DRCP]

    Nếu bạn muốn thử các ví dụ về DRCP trong phần 2, hãy khởi động nhóm DRCP. [Nhóm đã được bắt đầu trong Cơ sở dữ liệu tự trị của Oracle]

    Ví dụ: chạy SQL*Plus với đặc quyền SYSDBA

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    

    và thực hiện lệnh

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    0

    Lưu ý rằng bạn có thể cần thực hiện việc này trong cơ sở dữ liệu vùng chứa, không phải cơ sở dữ liệu có thể cắm được

  • Xem lại thông tin đăng nhập kết nối được sử dụng bởi các tập lệnh hướng dẫn

    Xem lại

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    45 và
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    46 trong thư mục
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    47. Chúng được bao gồm trong các tệp Python và SQL khác

    Chỉnh sửa

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    45 và thay đổi các giá trị mặc định để khớp với thông tin kết nối cho môi trường của bạn. Ngoài ra, bạn có thể đặt các biến môi trường đã cho trong cửa sổ đầu cuối của mình. Ví dụ: tên người dùng mặc định là "pythonhol" trừ khi biến môi trường "PYTHON USER" chứa tên người dùng khác. Chuỗi kết nối mặc định dành cho dịch vụ cơ sở dữ liệu 'orclpdb1' trên cùng một máy với Python. [Trong thuật ngữ Python Database API, tham số chuỗi kết nối được gọi là "tên nguồn dữ liệu" hoặc "dsn". ] Sử dụng biến môi trường rất tiện lợi vì bạn sẽ không bị yêu cầu nhập lại mật khẩu khi chạy tập lệnh

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    5

    Đồng thời thay đổi tên người dùng và chuỗi kết nối mặc định trong tệp cấu hình SQL*Plus

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    46

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    7

    Hướng dẫn hướng dẫn có thể cần điều chỉnh, tùy thuộc vào cách bạn đã thiết lập môi trường của mình

  • Xem lại đường dẫn thư viện Instant Client

    Xem lại cài đặt đường dẫn thư viện Máy khách Oracle trong

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    45. Nếu cx_Oracle không thể định vị thư viện Máy khách Oracle, thì ứng dụng của bạn sẽ không thành công với lỗi như "DPI-1047. Không thể định vị thư viện Máy khách Oracle 64 bit"

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    9

    Đặt

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    51 thành
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    52 hoặc thành một đường dẫn hợp lệ theo các ghi chú sau

    • Nếu bạn đang dùng macOS hoặc Windows và bạn đã cài đặt các thư viện Máy khách tức thì của Oracle vì cơ sở dữ liệu của bạn nằm trên một máy từ xa, thì hãy đặt

      sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
      
      51 thành đường dẫn của các thư viện Máy khách tức thì

    • Nếu bạn đang dùng Windows và đã cài đặt cơ sở dữ liệu cục bộ, thì hãy nhận xét hai dòng Windows, để

      sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
      
      51 vẫn là
      sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
      
      52

    • Trong tất cả các trường hợp khác [bao gồm cả Linux với Oracle Instant Client], đảm bảo rằng

      sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
      
      51 được đặt thành
      sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
      
      52. Trong những trường hợp này, bạn phải đảm bảo rằng các thư viện Oracle từ Instant Client hoặc ORACLE_HOME của bạn nằm trong đường dẫn tìm kiếm thư viện hệ thống của bạn trước khi bạn khởi động Python. Trên Linux, đường dẫn có thể được cấu hình bằng ldconfig hoặc bằng các biến môi trường LD_LIBRARY_PATH

Bạn có thể kết nối từ Python với cơ sở dữ liệu cục bộ, từ xa hoặc đám mây. Liên kết tài liệu để đọc thêm. Kết nối với cơ sở dữ liệu Oracle

  • 1. 1 Tạo kết nối cơ bản

    Xem lại mã có trong

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    58

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    8

    Mô-đun cx_Oracle được nhập để cung cấp API để truy cập cơ sở dữ liệu Oracle. Nhiều mô-đun sẵn có và bên thứ ba có thể được đưa vào tập lệnh Python theo cách này

    Phương thức

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    59 được chuyển tên người dùng, mật khẩu và chuỗi kết nối mà bạn đã định cấu hình trong db_config. mô-đun py. Trong trường hợp này, cú pháp chuỗi kết nối Easy Connect của Oracle được sử dụng. Nó bao gồm tên máy chủ của máy bạn,
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    60 và tên dịch vụ cơ sở dữ liệu
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    61. [Trong thuật ngữ Python Database API, tham số chuỗi kết nối được gọi là "tên nguồn dữ liệu" hoặc "dsn". ]

    Mở một thiết bị đầu cuối lệnh và thay đổi thư mục

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    47

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    3

    Chạy tập lệnh Python

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    4

    Số phiên bản của cơ sở dữ liệu sẽ được hiển thị. Một ngoại lệ được đưa ra nếu kết nối không thành công. Điều chỉnh tham số tên người dùng, mật khẩu hoặc chuỗi kết nối thành giá trị không hợp lệ để xem ngoại lệ

    cx_Oracle cũng hỗ trợ "xác thực bên ngoài", cho phép kết nối mà không cần nhúng tên người dùng và mật khẩu vào mã. Thay vào đó, xác thực sẽ được thực hiện bởi ví dụ: LDAP hoặc Ví Oracle

  • 1. 2 Thụt đầu dòng cho biết cấu trúc mã

    Không có dấu kết thúc câu lệnh hoặc từ khóa bắt đầu/kết thúc hoặc dấu ngoặc nhọn để biểu thị các khối mã

    Mở

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    58 trong trình chỉnh sửa. Thụt lề câu lệnh in với một số khoảng trắng

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    0

    Lưu tập lệnh và chạy lại

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    1

    Điều này đặt ra một ngoại lệ về vết lõm. Số lượng khoảng trắng hoặc tab phải nhất quán trong mỗi khối;

    Không phải lúc nào Python cũng có thể xác định được sự vô tình từ sự thụt đầu dòng có chủ ý. Kiểm tra xem bạn đã thụt lề đúng chưa trước khi chạy từng ví dụ. Đảm bảo thụt lề tất cả các khối câu lệnh như nhau. Lưu ý rằng các tệp mẫu sử dụng khoảng trắng, không phải tab

  • 1. 3 Thực hiện truy vấn

    Mở

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    64 trong trình chỉnh sửa. Nó trông giống như

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    2

    Chỉnh sửa tệp và thêm mã được in đậm bên dưới

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    3

    Đảm bảo rằng dòng

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    65 được thụt vào. Lab này sử dụng dấu cách, không phải tab

    Mã này thực thi một truy vấn và tìm nạp tất cả dữ liệu

    Lưu tệp và chạy nó

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    4

    Trong mỗi lần lặp lại, một hàng mới được lưu trữ trong

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    66 dưới dạng "bộ" Python và được hiển thị

    Tìm nạp dữ liệu được mô tả thêm trong phần 3

  • 1. 4 Đóng kết nối

    Các kết nối và các tài nguyên khác được sử dụng bởi cx_Oracle sẽ tự động bị đóng khi kết thúc phạm vi. Đây là một phong cách lập trình phổ biến đảm nhiệm đúng thứ tự đóng tài nguyên

    Tài nguyên cũng có thể được đóng một cách rõ ràng để giải phóng tài nguyên cơ sở dữ liệu nếu chúng không còn cần thiết. Điều này được khuyến nghị mạnh mẽ trong các khối mã vẫn hoạt động trong một thời gian

    Mở

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    64 trong trình chỉnh sửa và thêm lệnh gọi để đóng con trỏ và kết nối như

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    5

    Chạy tập lệnh hoàn tất mà không có lỗi

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    4

    Nếu bạn hoán đổi thứ tự của hai cuộc gọi

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    68, bạn sẽ thấy lỗi

  • 1. 5 Kiểm tra phiên bản

    Xem lại mã có trong

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    69

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    7

    Chạy tập lệnh

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    8

    Điều này mang lại phiên bản giao diện cx_Oracle

    Chỉnh sửa tệp để in phiên bản của cơ sở dữ liệu và của các thư viện máy khách Oracle được sử dụng bởi cx_Oracle

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    9

    Khi kịch bản được chạy, nó sẽ hiển thị

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    0

    Lưu ý phiên bản máy khách là một Tuple

    Mọi cài đặt cx_Oracle đều có thể kết nối với các phiên bản Cơ sở dữ liệu Oracle cũ hơn và mới hơn. Bằng cách kiểm tra Cơ sở dữ liệu Oracle và số phiên bản máy khách, ứng dụng có thể tận dụng các tính năng tốt nhất của Oracle hiện có

Nhóm kết nối rất quan trọng đối với hiệu suất khi các ứng dụng đa luồng thường xuyên kết nối và ngắt kết nối khỏi cơ sở dữ liệu. Pooling cũng hỗ trợ tốt nhất cho các tính năng sẵn sàng cao của Oracle. Liên kết tài liệu để đọc thêm. Tổng hợp kết nối

  • 2. 1 Tổng hợp kết nối

    Xem lại mã có trong

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    70

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    1

    Hàm

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    71 tạo nhóm kết nối Oracle cho người dùng. Các kết nối trong nhóm có thể được sử dụng bởi cx_Oracle bằng cách gọi
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    72. Kích thước nhóm ban đầu là 2 kết nối. Kích thước tối đa là 5 kết nối. Khi nhóm cần phát triển, thì 1 kết nối mới sẽ được tạo tại một thời điểm. Nhóm có thể thu nhỏ lại kích thước tối thiểu là 2 khi kết nối không còn được sử dụng

    Dòng

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    73 tạo một phương thức được gọi bởi mỗi luồng

    Trong phương thức này, cuộc gọi

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    72 nhận được một kết nối từ nhóm [miễn là có ít hơn 5 kết nối đã được sử dụng]. Kết nối này được sử dụng trong một vòng lặp gồm 4 lần lặp lại để truy vấn chuỗi
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    75. Khi kết thúc phương thức, cx_Oracle sẽ tự động đóng con trỏ và giải phóng kết nối trở lại nhóm để sử dụng lại

    Dòng

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    76 tìm nạp một hàng và đặt giá trị duy nhất có trong bộ dữ liệu kết quả vào biến
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    77. Nếu không có dấu phẩy, giá trị trong
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    77 sẽ là một bộ như "
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    79"

    Hai luồng được tạo, mỗi luồng gọi phương thức

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    80

    Trong một thiết bị đầu cuối lệnh, hãy chạy

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    2

    Đầu ra hiển thị các kết quả truy vấn xen kẽ khi mỗi luồng tìm nạp các giá trị một cách độc lập. Thứ tự xen kẽ có thể thay đổi từ lần chạy này sang lần chạy khác

  • 2. 2 Thử nghiệm nhóm kết nối

    Xem lại

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    81, có vòng lặp cho số luồng, mỗi lần lặp lại gọi phương thức
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    80

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    3

    Trong một thiết bị đầu cuối lệnh, hãy chạy

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    4

    Thử nghiệm với các giá trị khác nhau của tham số nhóm và

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    83. Kích thước nhóm ban đầu lớn hơn sẽ khiến quá trình tạo nhóm chậm hơn, nhưng các kết nối sẽ khả dụng ngay lập tức khi cần

    Hãy thử thay đổi

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    84 thành
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    85. Khi
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    83 vượt quá kích thước tối đa của nhóm, cuộc gọi
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    87 sẽ tạo ra lỗi như "ORA-24459. OCISessionGet[] đã hết thời gian chờ nhóm tạo kết nối mới"

    Các cấu hình nhóm trong đó

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    88 giống như
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    89 [và
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    90] thường được khuyến nghị là phương pháp hay nhất. Điều này tránh các cơn bão kết nối trên máy chủ cơ sở dữ liệu

  • 2. 3 Tạo kết nối DRCP

    Tổng hợp kết nối thường trú cơ sở dữ liệu cho phép nhiều quy trình Python trên nhiều máy chia sẻ một nhóm nhỏ các quy trình máy chủ cơ sở dữ liệu

    Dưới bên trái là sơ đồ không có DRCP. Mọi kết nối độc lập của ứng dụng [hoặc kết nối nhóm kết nối cx_Oracle] đều có quy trình máy chủ cơ sở dữ liệu riêng. Ứng dụng độc lập

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    59 và các cuộc gọi đóng yêu cầu tạo và hủy tốn kém các quy trình máy chủ cơ sở dữ liệu đó. Nhóm kết nối cx_Oracle giảm các chi phí này bằng cách giữ cho các quy trình máy chủ cơ sở dữ liệu luôn mở, nhưng mọi nhóm kết nối cx_Oracle sẽ yêu cầu tập hợp các quy trình máy chủ cơ sở dữ liệu của riêng nó, ngay cả khi chúng không hoạt động với cơ sở dữ liệu. các quy trình máy chủ nhàn rỗi này tiêu tốn tài nguyên máy chủ cơ sở dữ liệu. Bên dưới bên phải là sơ đồ với DRCP. Các quy trình tập lệnh và Python có thể chia sẻ các máy chủ cơ sở dữ liệu từ một nhóm máy chủ được tạo sẵn và trả lại chúng khi chúng không được sử dụng

    DRCP rất hữu ích khi máy chủ cơ sở dữ liệu không có đủ bộ nhớ để xử lý số lượng quy trình máy chủ cơ sở dữ liệu cần thiết. Nếu DRCP được bật, nó được sử dụng tốt nhất cùng với nhóm kết nối của cx_Oracle. Tuy nhiên, nếu bộ nhớ máy chủ cơ sở dữ liệu đủ lớn, thì mô hình quy trình máy chủ 'chuyên dụng' mặc định thường được khuyến nghị. Điều này có thể có hoặc không có nhóm kết nối cx_Oracle, tùy thuộc vào tốc độ kết nối

    Các tập lệnh hàng loạt thực hiện các công việc chạy dài thường nên sử dụng các kết nối chuyên dụng. Cả máy chủ chuyên dụng và máy chủ DRCP đều có thể được sử dụng cùng nhau trong cùng một ứng dụng hoặc cơ sở dữ liệu

    Xem lại mã có trong

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    92

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    5

    Điều này tương tự với

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    58 nhưng "_______094" được thêm vào chuỗi kết nối, báo cho cơ sở dữ liệu sử dụng máy chủ gộp. Lớp kết nối "PYTHONHOL" cũng được chuyển vào phương thức
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    59 để cho phép nhóm các máy chủ cơ sở dữ liệu cho các ứng dụng. Lưu ý với Cơ sở dữ liệu tự trị, chuỗi kết nối có dạng khác, xem tài liệu của ADB

    "Độ tinh khiết" của kết nối được định nghĩa là hằng số

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    96, nghĩa là trạng thái phiên [chẳng hạn như định dạng ngày mặc định] có thể được giữ lại giữa các cuộc gọi kết nối, mang lại lợi ích về hiệu suất. Thông tin phiên sẽ bị loại bỏ nếu một máy chủ gộp sau đó được sử dụng lại bởi một ứng dụng có tên lớp kết nối khác

    Các ứng dụng không bao giờ chia sẻ thông tin phiên nên sử dụng một lớp kết nối khác và/hoặc sử dụng

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    97 để buộc tạo một phiên mới. Điều này làm giảm khả năng mở rộng tổng thể nhưng ngăn các ứng dụng sử dụng sai thông tin phiên

    Chạy

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    92 trong cửa sổ đầu cuối

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    6

    Đầu ra chỉ đơn giản là phiên bản của cơ sở dữ liệu

  • 2. 4 Tổng hợp kết nối và DRCP

    DRCP hoạt động tốt với nhóm kết nối của cx_Oracle

    Chỉnh sửa

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    81, đặt lại mọi tùy chọn nhóm đã thay đổi và sửa đổi nó để sử dụng DRCP

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    7

    Logic tập lệnh không cần phải thay đổi để hưởng lợi từ việc tổng hợp kết nối DRCP

    Chạy tập lệnh

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    4

    Xem lại dcp_query. sql và đặt chuỗi kết nối vào cơ sở dữ liệu của bạn. Sau đó, mở một cửa sổ đầu cuối mới và gọi SQL*Plus

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    9

    Thao tác này sẽ nhắc nhập mật khẩu HỆ THỐNG và chuỗi kết nối cơ sở dữ liệu. Với cơ sở dữ liệu Pluggable, bạn sẽ cần kết nối với cơ sở dữ liệu vùng chứa. Lưu ý rằng với ADB, chế độ xem này không chứa hàng nên việc chạy tập lệnh này không hữu ích

    Đối với các cơ sở dữ liệu khác, tập lệnh hiển thị số lượng yêu cầu kết nối được thực hiện với nhóm kể từ khi cơ sở dữ liệu được khởi động ["NUM_REQUESTS"], bao nhiêu trong số đó đã sử dụng lại phiên của máy chủ được gộp chung ["NUM_HITS"] và bao nhiêu người phải tạo phiên mới . Thông thường, mục tiêu là số lần bỏ lỡ thấp

    Để xem cấu hình nhóm, bạn có thể truy vấn DBA_CPOOL_INFO

  • 2. 5 Thêm điều tra DRCP

    Để khám phá thêm các hành vi của nhóm kết nối cx_Oracle và nhóm DRCP, bạn có thể thử thay đổi độ tinh khiết thành

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    00 để xem tác động đối với thống kê DRCP NUM_MISSES

    Một thử nghiệm khác là đưa mô-đun ________ 901 vào đầu tệp

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    00

    và thêm lệnh gọi tới

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    02 trong mã, chẳng hạn như trong vòng lặp truy vấn. Sau đó nhìn vào cách các chủ đề thực hiện. Sử dụng
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    03 để theo dõi hành vi của nhóm

Thực hiện các truy vấn CHỌN là cách chính để lấy dữ liệu từ Cơ sở dữ liệu Oracle. Liên kết tài liệu để đọc thêm. Truy vấn SQL

  • 3. 1 Một truy vấn đơn giản

    Có một số chức năng bạn có thể sử dụng để truy vấn cơ sở dữ liệu Oracle, nhưng những điều cơ bản của truy vấn luôn giống nhau

    1. Thực hiện tuyên bố.
    2. Giá trị dữ liệu ràng buộc [tùy chọn].
    3. Lấy kết quả từ cơ sở dữ liệu.

    Xem lại mã có trong

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    04

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    01

    Phương thức

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    05 mở một con trỏ để sử dụng các câu lệnh

    Phương thức

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    06 phân tích cú pháp và thực thi câu lệnh

    Vòng lặp tìm nạp từng hàng từ con trỏ và giải nén bộ trả về thành các biến

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    07,
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    08,
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    09, sau đó được in ra

    Chạy tập lệnh trong cửa sổ đầu cuối

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    02

    đầu ra là

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    03
  • 3. 2 Sử dụng tìm nạp []

    Khi số lượng hàng lớn, lệnh gọi

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    10 có thể sử dụng quá nhiều bộ nhớ

    Xem lại mã có trong

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    11

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    04

    Cái này sử dụng phương thức

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    12 để trả về chỉ một hàng dưới dạng một bộ. Khi được gọi nhiều lần, các hàng liên tiếp được trả về

    Chạy tập lệnh trong cửa sổ đầu cuối

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    05

    Hai hàng đầu tiên của bảng được in

  • 3. 3 Sử dụng hàm tìm nạp []

    Xem lại mã có trong

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    13

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    06

    Phương thức

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    14 trả về một danh sách các bộ dữ liệu. Theo mặc định, số hàng được trả về được chỉ định bởi thuộc tính con trỏ
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    15 [mặc định là 100]. Ở đây, tham số
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    16 chỉ định rằng ba hàng sẽ được trả về

    Chạy tập lệnh trong cửa sổ đầu cuối

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    07

    Ba hàng đầu tiên của bảng được trả về dưới dạng một danh sách [tên của Python cho một mảng] các bộ dữ liệu

    Bạn có thể truy cập các phần tử của danh sách theo chỉ mục vị trí. Để thấy điều này, hãy chỉnh sửa tệp và thêm

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    08
  • 3. 4 con trỏ có thể cuộn

    Con trỏ có thể cuộn cho phép ứng dụng di chuyển lùi cũng như tiến trong kết quả truy vấn. Chúng có thể được sử dụng để bỏ qua các hàng cũng như di chuyển đến một hàng cụ thể

    Xem lại mã có trong

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    17

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    09

    Chạy tập lệnh trong cửa sổ đầu cuối

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    50

    Chỉnh sửa

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    17 và thử nghiệm với các tùy chọn và thứ tự cuộn khác nhau, chẳng hạn như

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    51

    Hãy thử một số tùy chọn cuộn vượt quá số lượng hàng trong tập kết quả

  • 3. 5 Điều chỉnh với kích thước mảng và tìm nạp trước

    Phần này trình bày cách cải thiện hiệu suất truy vấn bằng cách tăng số lượng hàng được trả về trong mỗi đợt từ Oracle sang chương trình Python

    Tìm nạp trước hàng và tìm nạp mảng đều là các kỹ thuật đệm nội bộ để giảm các chuyến đi khứ hồi tới cơ sở dữ liệu. Sự khác biệt là lớp mã đang thực hiện bộ đệm và khi bộ đệm xảy ra

    Đầu tiên, tạo một bảng có nhiều hàng. Đánh giá

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    19

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    52

    Trong một cửa sổ đầu cuối chạy tập lệnh như

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    53

    Xem lại mã có trong

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    20

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    54

    Điều này sử dụng mô-đun 'thời gian' để đo thời gian đã trôi qua của truy vấn. Các giá trị tìm nạp trước và kích thước mảng là 100. Điều này khiến hàng loạt 100 bản ghi cùng một lúc được trả về từ cơ sở dữ liệu vào bộ đệm trong Python. Các giá trị này có thể được điều chỉnh để giảm số lượng "chuyến đi khứ hồi" được thực hiện đối với cơ sở dữ liệu, thường giúp giảm tải mạng và giảm số lần chuyển ngữ cảnh trên máy chủ cơ sở dữ liệu. Các phương thức

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    12,
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    14 và
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    10 sẽ đọc từ bộ đệm trước khi yêu cầu thêm dữ liệu từ cơ sở dữ liệu

    Trong một cửa sổ đầu cuối, hãy chạy

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    55

    Chạy lại một vài lần để xem thời gian trung bình

    Thử nghiệm với các giá trị tìm nạp trước và kích thước mảng khác nhau. Ví dụ: chỉnh sửa

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    20 và thay đổi kích thước mảng thành

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    56

    Chạy lại tập lệnh để so sánh hiệu suất của các cài đặt kích thước mảng khác nhau

    Nói chung, kích thước mảng lớn hơn cải thiện hiệu suất. Tùy thuộc vào tốc độ hệ thống của bạn, bạn có thể cần sử dụng các giá trị khác với các giá trị được cung cấp ở đây để thấy sự khác biệt về thời gian có ý nghĩa

    Có sự đánh đổi về thời gian/không gian để tăng các giá trị. Các giá trị lớn hơn sẽ yêu cầu nhiều bộ nhớ hơn trong Python để đệm các bản ghi

    Nếu bạn biết truy vấn trả về một số lượng hàng cố định, chẳng hạn như 20 hàng, thì hãy đặt kích thước mảng thành 20 và tìm nạp trước các hàng thành 21. Việc bổ sung một cho các lần tìm nạp trước sẽ ngăn hành trình khứ hồi để kiểm tra tìm nạp cuối. Việc thực thi và tìm nạp câu lệnh sẽ mất tổng cộng một chuyến khứ hồi. Điều này giảm thiểu tải trên cơ sở dữ liệu

    Nếu bạn biết một truy vấn chỉ trả về một vài bản ghi, hãy giảm kích thước mảng từ mặc định để giảm mức sử dụng bộ nhớ

Các biến liên kết cho phép bạn thực hiện lại các câu lệnh với các giá trị dữ liệu mới mà không cần phải phân tích lại câu lệnh. Liên kết cải thiện khả năng sử dụng lại mã, cải thiện khả năng mở rộng ứng dụng và có thể giảm nguy cơ tấn công SQL injection. Sử dụng các biến liên kết được khuyến khích mạnh mẽ. Liên kết tài liệu để đọc thêm. Sử dụng các biến liên kết

  • 4. 1 Ràng buộc trong truy vấn

    Xem lại mã có trong

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    25

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    57

    Câu lệnh chứa biến liên kết giữ chỗ "______926". Câu lệnh được thực hiện hai lần với các giá trị khác nhau cho mệnh đề

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    27

    Từ một cửa sổ đầu cuối, chạy

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    58

    Đầu ra hiển thị chi tiết cho hai phòng ban

    Có thể sử dụng số lượng đối số được đặt tên tùy ý trong cuộc gọi

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    06. Mỗi tên đối số phải khớp với một tên biến liên kết. Ngoài ra, thay vì chuyển nhiều đối số, bạn có thể chuyển đối số thứ hai cho
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    06, đó là một chuỗi hoặc một từ điển. Các ví dụ sau cho thấy các cú pháp này

    Để liên kết cơ sở dữ liệu NULL, hãy sử dụng giá trị Python

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    52

    cx_Oracle sử dụng Bộ đệm Tuyên bố của Cơ sở dữ liệu Oracle. Miễn là câu lệnh bạn chuyển tới

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    06 nằm trong bộ đệm đó, bạn có thể sử dụng các giá trị liên kết khác nhau mà vẫn tránh được việc phân tích cú pháp câu lệnh đầy đủ. Kích thước bộ đệm câu lệnh có thể định cấu hình cho mỗi kết nối. Để xem kích thước bộ đệm câu lệnh mặc định, hãy chỉnh sửa
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    25 và thêm một dòng ở cuối

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    59

    Chạy lại tập tin

    Trong các ứng dụng của mình, bạn sẽ đặt kích thước bộ đệm câu lệnh thành số lượng câu lệnh duy nhất thường được thực thi

  • 4. 2 Đóng gáy trong hạt dao

    Xem lại mã trong

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    33 tạo bảng để chèn dữ liệu

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    70

    Chạy tập lệnh như

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    71

    Xem lại mã có trong

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    34

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    72

    Mảng '

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    35' chứa dữ liệu cần chèn

    Cuộc gọi

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    36 chèn tất cả các hàng. Cuộc gọi này sử dụng "ràng buộc mảng", đây là một cách hiệu quả để chèn nhiều bản ghi

    Phần cuối cùng của tập lệnh truy vấn lại kết quả và hiển thị chúng dưới dạng danh sách các bộ dữ liệu

    Từ một cửa sổ đầu cuối, chạy

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    73

    Các kết quả mới được tự động khôi phục ở cuối tập lệnh để chạy lại tập lệnh sẽ luôn hiển thị cùng một số hàng trong bảng

  • 4. 3 lỗi hàng loạt

    Các tính năng Batcherrors cho phép xác định dữ liệu không hợp lệ trong khi vẫn cho phép chèn dữ liệu hợp lệ

    Chỉnh sửa các giá trị dữ liệu trong

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    34 và tạo một hàng có khóa trùng lặp

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    74

    Từ một cửa sổ đầu cuối, chạy

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    73

    Bản sao tạo ra lỗi "ORA-00001. ràng buộc duy nhất [PYTHONHOL. MY_PK] đã vi phạm". Dữ liệu được khôi phục và truy vấn không trả về hàng nào

    Chỉnh sửa lại tệp và bật

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    38 like

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    76

    Chạy tập tin

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    73

    Mã mới hiển thị hàng trùng lặp vi phạm. "ORA-00001. ràng buộc duy nhất [PYTHONHOL. MY_PK] đã vi phạm ở hàng bù 6". Điều này cho biết giá trị dữ liệu thứ 6 [tính từ 0] đã gặp sự cố

    Dữ liệu khác được chèn vào và được truy vấn lại

    Khi kết thúc tập lệnh, cx_Oracle sẽ khôi phục giao dịch chưa được cam kết. Nếu bạn muốn cam kết kết quả, bạn có thể sử dụng

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    78

    Để buộc cx_Oracle quay lại, hãy sử dụng

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    79
  • 4. 4 Ràng buộc các đối tượng được đặt tên

    cx_Oracle có thể tìm nạp và liên kết các loại đối tượng được đặt tên, chẳng hạn như Đối tượng dữ liệu không gian của Oracle [SDO]

    Trong cửa sổ đầu cuối, hãy khởi động SQL*Plus bằng cách sử dụng thông tin đăng nhập phòng thí nghiệm và chuỗi kết nối, chẳng hạn như

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    90

    Sử dụng lệnh SQL*Plus DESCRIBE để xem định nghĩa SDO

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    91

    Nó chứa các thuộc tính và phương thức khác nhau. Mô tả cấp cao nhất là

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    92

    Xem lại mã có trong

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    39

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    93

    Điều này sử dụng

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    40 để lấy các loại cơ sở dữ liệu của SDO và các thuộc tính đối tượng của nó. Các cuộc gọi
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    41 tạo các biểu diễn Python của các đối tượng đó. Các thuộc tính đối tượng python sau đó được đặt. Các loại VARRAY của Oracle như SDO_ELEM_INFO_ARRAY được đặt bằng
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    42

    Chạy tập tin

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    94

    SDO mới được hiển thị dưới dạng một đối tượng, tương tự như

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    95

    Để hiển thị các giá trị thuộc tính, hãy chỉnh sửa phần mã truy vấn ở cuối tệp. Thêm một phương thức mới đi ngang qua đối tượng. Tệp bên dưới nhận xét hiện có "

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    43"] sẽ giống như

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    96

    Chạy lại tập tin

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    94

    Màn trình diễn này

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    98

    Để khám phá thêm, hãy thử đặt thuộc tính SDO SDO_POINT, thuộc loại SDO_POINT_TYPE

    Các phương thức

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    40 và
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    41 cũng có thể được sử dụng để liên kết Bản ghi và Bộ sưu tập PL/SQL

    Trước khi quyết định sử dụng các đối tượng, hãy xem lại mục tiêu hiệu suất của bạn vì làm việc với các giá trị vô hướng có thể nhanh hơn

PL/SQL là phần mở rộng ngôn ngữ thủ tục của Oracle cho SQL. Các thủ tục và hàm PL/SQL được lưu trữ và chạy trong cơ sở dữ liệu. Việc sử dụng PL/SQL cho phép tất cả các ứng dụng cơ sở dữ liệu sử dụng lại logic, bất kể ứng dụng đó truy cập cơ sở dữ liệu như thế nào. Nhiều hoạt động liên quan đến dữ liệu có thể được thực hiện trong PL/SQL nhanh hơn so với việc trích xuất dữ liệu vào một chương trình [ví dụ: Python] rồi xử lý dữ liệu đó. Liên kết tài liệu để đọc thêm. Thực thi PL/SQL

  • 5. 1 hàm PL/SQL

    Xem lại

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    46 tạo hàm lưu trữ PL/SQL
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    47 để chèn một hàng vào bảng mới có tên ptab và trả về gấp đôi giá trị được chèn

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    99

    Chạy tập lệnh bằng cách sử dụng

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    80

    Xem lại mã có trong

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    48

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    81

    Điều này sử dụng

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    49 để thực hiện chức năng. Tham số thứ hai là loại giá trị trả về. Nó phải là một trong các loại được hỗ trợ bởi cx_Oracle hoặc một trong các hằng số loại được xác định bởi cx_Oracle [chẳng hạn như cx_Oracle. CON SỐ]. Hai tham số hàm PL/SQL được truyền dưới dạng một bộ, liên kết chúng với các đối số tham số hàm

    Từ một cửa sổ đầu cuối, chạy

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    82

    Đầu ra là kết quả của phép tính hàm PL/SQL

  • 5. 2 thủ tục PL/SQL

    Xem lại

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    50 tạo thủ tục PL/SQL
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    51 để chấp nhận hai tham số. Tham số thứ hai chứa giá trị trả về OUT

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    83

    Chạy tập lệnh với

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    84

    Xem lại mã có trong

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    52

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    85

    Điều này tạo ra một biến số nguyên

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    53 để giữ giá trị được trả về bởi tham số PL/SQL OUT. Số đầu vào 123 và tên biến đầu ra được liên kết với các tham số gọi thủ tục bằng cách sử dụng một bộ

    Để gọi thủ tục PL/SQL, phương thức

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    54 được sử dụng

    Trong một cửa sổ đầu cuối, hãy chạy

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    86

    Phương thức

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    55 hiển thị giá trị trả về

Trình xử lý kiểu cho phép ứng dụng thay đổi dữ liệu được tìm nạp từ hoặc gửi đến cơ sở dữ liệu. Liên kết tài liệu để đọc thêm. Thay đổi các loại dữ liệu đã tìm nạp bằng Trình xử lý loại đầu ra và Thay đổi các loại dữ liệu liên kết bằng Trình xử lý loại đầu vào

  • 6. 1 Trình xử lý loại đầu ra cơ bản

    Trình xử lý loại đầu ra cho phép các ứng dụng thay đổi cách tìm nạp dữ liệu từ cơ sở dữ liệu. Ví dụ: số có thể được trả về dưới dạng chuỗi hoặc đối tượng thập phân. LOB có thể được trả về dưới dạng chuỗi hoặc byte

    Trình xử lý loại được bật bằng cách đặt thuộc tính

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    56 trên con trỏ hoặc kết nối. Nếu được đặt trên một con trỏ, nó chỉ ảnh hưởng đến các truy vấn được thực hiện bởi con trỏ đó. Nếu được đặt trên một kết nối, nó sẽ ảnh hưởng đến tất cả các truy vấn được thực hiện trên các con trỏ được tạo bởi kết nối đó

    Xem lại mã có trong

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    57

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    87

    Trong một cửa sổ đầu cuối, hãy chạy

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    88

    Điều này cho thấy số bộ phận được biểu thị dưới dạng các chữ số như

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    58

    Thêm trình xử lý loại đầu ra vào cuối tệp

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    89

    Trình xử lý loại này chuyển đổi bất kỳ cột số nào thành chuỗi có kích thước tối đa 9

    Chạy lại kịch bản

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    88

    Đầu ra mới cho thấy số bộ phận hiện là chuỗi trong dấu ngoặc kép như

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    59

  • 6. 2 Trình xử lý loại đầu ra và bộ biến đổi

    Khi các số được tìm nạp từ cơ sở dữ liệu, việc chuyển đổi từ biểu diễn thập phân của Oracle sang định dạng nhị phân của Python có thể cần được xử lý cẩn thận. Để tránh các sự cố không mong muốn, khuyến nghị chung là thực hiện các phép toán số trong SQL hoặc PL/SQL hoặc sử dụng mô-đun thập phân trong Python

    Trình xử lý loại đầu ra có thể được kết hợp với bộ chuyển đổi biến để thay đổi cách tìm nạp dữ liệu

    Đánh giá

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    60

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    31

    Chạy tập tin

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    32

    Đầu ra giống như

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    33

    Chỉnh sửa tệp và thêm trình xử lý loại sử dụng trình chuyển đổi thập phân Python

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    34

    Trình chuyển đổi Python

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    61 được gọi với biểu diễn chuỗi của số Oracle. Đầu ra từ
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    61 được trả về trong bộ dữ liệu đầu ra

    Chạy lại tập tin

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    32

    Đầu ra giống như

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    36

    Mặc dù mã thể hiện việc sử dụng bộ chuyển đổi ngoài, nhưng trong trường hợp cụ thể này, biến có thể được tạo đơn giản bằng cách sử dụng mã sau để thay thế hàm outputtypehandler được xác định ở trên

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    37
  • 6. 3 Trình xử lý kiểu đầu vào

    Trình xử lý kiểu đầu vào cho phép các ứng dụng thay đổi cách dữ liệu được liên kết với các câu lệnh hoặc cho phép các loại mới được liên kết trực tiếp mà không cần phải chuyển đổi riêng lẻ

    Xem lại

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    63, tương tự như
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    39 cuối cùng từ phần 4. 4, với việc bổ sung một lớp mới và trình chuyển đổi [được in đậm]

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    38

    Trong tệp mới, một lớp Python

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    65 được định nghĩa, lớp này có các thuộc tính tương ứng với từng MDSYS của Oracle. Thuộc tính SDO_GEOMETRY. Lớp
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    65 được sử dụng thấp hơn trong mã để tạo một phiên bản Python

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    39

    sau đó được liên kết trực tiếp vào câu lệnh INSERT như

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    40

    Ánh xạ giữa các đối tượng Python và Oracle được xử lý trong

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    67 sử dụng các phương thức cx_Oracle
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    41 và
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    42 để tạo một đối tượng Oracle từ các giá trị đối tượng Python. Phương thức
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    67 được gọi bởi trình xử lý kiểu đầu vào
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    71 bất cứ khi nào một thể hiện của
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    65 được chèn bằng con trỏ

    Để xác nhận hành vi, hãy chạy tệp

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    41

Các đối tượng dài "LOB" của Cơ sở dữ liệu Oracle có thể được truyền trực tuyến bằng bộ định vị LOB hoặc làm việc trực tiếp dưới dạng chuỗi hoặc byte. Liên kết tài liệu để đọc thêm. Sử dụng dữ liệu CLOB và BLOB

  • 7. 1 Tìm nạp CLOB bằng công cụ định vị

    Xem lại mã có trong

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    73

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    42

    Thao tác này sẽ chèn một số dữ liệu chuỗi thử nghiệm và sau đó tìm nạp một bản ghi vào ________ 974, là Đối tượng LOB ký tự cx_Oracle. Các phương pháp trên LOB bao gồm

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    75 và
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    76

    Để xem đầu ra, hãy chạy tệp

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    43

    Chỉnh sửa tệp và thử nghiệm đọc các khối dữ liệu bằng cách cung cấp vị trí và độ dài ký tự bắt đầu, chẳng hạn như

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    77

  • 7. 2 Tìm nạp CLOB dưới dạng chuỗi

    Đối với các CLOB đủ nhỏ để vừa với bộ nhớ ứng dụng, việc tìm nạp chúng trực tiếp dưới dạng chuỗi sẽ nhanh hơn nhiều

    Xem lại mã có trong

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    78. Sự khác biệt từ
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    73 được in đậm

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    44

    OutputTypeHandler khiến cx_Oracle tìm nạp CLOB dưới dạng chuỗi. Các hàm chuỗi Python tiêu chuẩn như

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    80 có thể được sử dụng trên kết quả

    Đầu ra giống như đối với

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    73. Để kiểm tra, hãy chạy tệp

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    45

Các hàm Rowfactory cho phép các truy vấn trả về các đối tượng khác với các bộ dữ liệu. Chúng có thể được sử dụng để cung cấp tên cho các cột khác nhau hoặc để trả về các đối tượng tùy chỉnh

  • 8. 1 Rowfactory để ánh xạ tên cột

    Xem lại mã có trong

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    82

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    46

    Điều này cho thấy hai phương pháp truy cập các mục trong tập kết quả từ một hàng dữ liệu. Cái đầu tiên sử dụng các chỉ mục mảng như

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    83. Cái thứ hai sử dụng các biến mục tiêu của vòng lặp lấy các giá trị của từng bộ hàng

    Chạy tập tin

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    47

    Cả hai phương thức truy cập đều cho kết quả như nhau

    Để sử dụng chức năng rowfactory, hãy chỉnh sửa

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    82 và thêm mã này vào cuối

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    48

    Điều này sử dụng hàm nhà máy Python

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    85 để tạo một lớp con của bộ dữ liệu cho phép truy cập vào các phần tử thông qua các chỉ mục hoặc tên trường đã cho

    Hàm

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    86 hiển thị việc sử dụng các trường bộ dữ liệu được đặt tên mới. Phong cách mã hóa này có thể giúp giảm lỗi mã hóa

    Chạy lại kịch bản

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    47

    Kết quả đầu ra là như nhau

Phân lớp cho phép ứng dụng "móc nối" kết nối và tạo con trỏ. Điều này có thể được sử dụng để thay đổi hoặc ghi nhật ký các tham số thực thi và kết nối cũng như để mở rộng chức năng cx_Oracle. Liên kết tài liệu để đọc thêm. Truy tìm các câu lệnh SQL và PL/SQL

  • 9. 1 kết nối phân lớp

    Xem lại mã có trong

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    87

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    00

    Điều này tạo ra một lớp mới "MyConnection" kế thừa từ lớp cx_Oracle Connection. Phương thức

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    88 được gọi khi một thể hiện của lớp mới được tạo. Nó in một tin nhắn và gọi lớp cơ sở, chuyển thông tin đăng nhập kết nối

    Trong ứng dụng "bình thường", mã ứng dụng

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    01

    không cần cung cấp bất kỳ thông tin đăng nhập nào vì chúng được nhúng trong lớp con tùy chỉnh. Tất cả các phương thức cx_Oracle như

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    05 đều khả dụng, như được hiển thị bởi truy vấn

    Chạy tập tin

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    02

    Truy vấn thực hiện thành công

  • 9. 2 con trỏ phân lớp

    Chỉnh sửa

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    87 và mở rộng phương thức
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    05 với lớp MyCursor mới

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    03

    Khi ứng dụng nhận được một con trỏ từ lớp

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    92, phương thức
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    05 mới trả về một thể hiện của lớp
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    94 mới của chúng ta

    Mã truy vấn "ứng dụng" không thay đổi. Các phương thức

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    06 và
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    12 mới của lớp
    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    94 được gọi. Họ thực hiện một số thao tác ghi nhật ký và gọi các phương thức gốc để thực hiện thực thi câu lệnh thực tế

    Để xác nhận điều này, hãy chạy lại tệp

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    02

Hàng đợi nâng cao của Oracle [AQ] cho phép các thông báo được chuyển giữa các ứng dụng. Liên kết tài liệu để đọc thêm. Hàng đợi nâng cao của Oracle [AQ]

  • 10. 1 Tin nhắn đi qua với Hàng đợi nâng cao của Oracle

    Đánh giá

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    98

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    05

    Tệp này thiết lập Xếp hàng nâng cao bằng gói DBMS_AQADM của Oracle. Hàng đợi được sử dụng để chuyển các đối tượng Oracle UDT_BOOK. Tệp sử dụng các tính năng giao diện AQ nâng cao trong cx_Oracle 7. 2

    Chạy tập tin

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    06

    Đầu ra hiển thị các tin nhắn đang được xếp hàng và xếp hàng

    Để thử nghiệm, hãy chia mã thành ba tệp. một để tạo và bắt đầu hàng đợi, và hai tệp khác để xếp hàng và xóa tin nhắn. Thử nghiệm chạy đồng thời các tệp xếp hàng và xếp hàng trong các cửa sổ đầu cuối riêng biệt

    Hãy thử loại bỏ cuộc gọi

    sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
    
    99 trong
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    000. Bây giờ hãy chạy
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    001 một lần và sau đó
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    000 vài lần. Các tin nhắn tương tự sẽ có sẵn mỗi khi bạn cố gắng loại bỏ chúng

    Thay đổi

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    000 để cam kết trong một giao dịch riêng biệt bằng cách thay đổi cài đặt "mức độ hiển thị"

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    07

    Điều này mang lại hành vi giống như mã gốc

    Bây giờ hãy thay đổi các tùy chọn của các tin nhắn được xếp hàng để chúng hết hạn khỏi hàng đợi nếu chúng không được xếp sau bốn giây

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    08

    Bây giờ hãy chạy ________ 1001 và đợi vài giây trước khi bạn chạy _______ 1000. Không nên có tin nhắn để dequeue

    Nếu bạn gặp khó khăn, hãy tìm trong thư mục

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    006 tại các tệp
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    000,
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    001 và
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    009

Truy cập tài liệu Oracle đơn giản [SODA] là một bộ API kiểu NoSQL. Có thể chèn, truy vấn và truy xuất tài liệu từ Cơ sở dữ liệu Oracle. Theo mặc định, tài liệu là các chuỗi JSON. API SODA tồn tại ở nhiều ngôn ngữ. Liên kết tài liệu để đọc thêm. Truy cập tài liệu Oracle đơn giản [SODA]

  • 11. 1 Chèn tài liệu JSON

    Đánh giá

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    010

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    09

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    011 sẽ tạo một bộ sưu tập mới hoặc mở một bộ sưu tập hiện có nếu tên này đã được sử dụng. [Do thay đổi trong bộ lưu trữ "sqlType" mặc định cho Cơ sở dữ liệu Oracle 21c, siêu dữ liệu được nêu rõ ràng để sử dụng cột BLOB. Điều này cho phép ví dụ chạy với các phiên bản máy khách và cơ sở dữ liệu khác nhau]

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    012 chèn nội dung của tài liệu vào cơ sở dữ liệu và trả về Đối tượng Tài liệu SODA. Điều này cho phép truy cập vào dữ liệu meta như khóa tài liệu. Theo mặc định, các khóa tài liệu được tạo tự động

    Phương pháp

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    013 được sử dụng để bắt đầu một hoạt động sẽ hành động dựa trên các tài liệu trong bộ sưu tập

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    014 là từ điển. Bạn cũng có thể lấy một chuỗi JSON bằng cách gọi
    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    015

    Chạy tập tin

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    10

    Đầu ra hiển thị nội dung của tài liệu mới

  • 11. 2 Tìm kiếm tài liệu SODA

    Mở rộng

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    010 để chèn thêm một số tài liệu và thực hiện thao tác tìm bộ lọc

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    11

    Chạy lại kịch bản

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    10

    Thao tác tìm lọc bộ sưu tập và trả về các tài liệu có thành phố là Melbourne. Lưu ý rằng phương pháp

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    017 hiện đang được xem trước

    SODA hỗ trợ truy vấn theo ví dụ [QBE] với một bộ toán tử mở rộng. Mở rộng

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    010 với QBE để tìm các tài liệu có độ tuổi dưới 25

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    13

    Chạy tập lệnh hiển thị tên

Trong hướng dẫn này, bạn đã học cách

  • Tạo kết nối
  • Sử dụng tổng hợp kết nối cx_Oracle và Tổng hợp kết nối thường trú cơ sở dữ liệu
  • Thực hiện truy vấn và tìm nạp dữ liệu
  • Sử dụng các biến liên kết
  • Sử dụng các hàm và thủ tục lưu trữ PL/SQL
  • Mở rộng các lớp cx_Oracle
  • Sử dụng hàng đợi nâng cao của Oracle
  • Sử dụng API lưu trữ tài liệu "SODA"

Để đọc thêm, hãy xem tài liệu cx_Oracle

Python là một ngôn ngữ kịch bản được gõ động. Nó thường được sử dụng để chạy các tập lệnh dòng lệnh nhưng cũng được sử dụng cho các ứng dụng web và dịch vụ web

Chạy Python

bạn có thể

  • Tạo một tệp các lệnh Python, chẳng hạn như

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    019. Điều này có thể được chạy với

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    14
  • Hoặc chạy trình thông dịch Python bằng cách thực hiện lệnh

    sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
    
    020 trong một thiết bị đầu cuối, sau đó nhập lệnh một cách tương tác. Sử dụng Ctrl-D để thoát trở lại dấu nhắc hệ điều hành

Khi bạn chạy các tập lệnh, Python sẽ tự động tạo các phiên bản mã byte của chúng trong một thư mục có tên là

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
021. Chúng cải thiện hiệu suất của các tập lệnh được chạy nhiều lần. Chúng được tự động tạo lại nếu tệp nguồn thay đổi

thụt đầu dòng

Khoảng trắng thụt đầu dòng có ý nghĩa quan trọng trong Python. Khi sao chép các ví dụ, hãy sử dụng cùng một căn chỉnh cột như được hiển thị. Các mẫu trong phòng thí nghiệm này sử dụng dấu cách, không phải tab

In thụt đầu dòng sau 'xong' một lần sau khi vòng lặp hoàn thành

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
15

Nhưng vết lõm này in 'xong' trong mỗi lần lặp lại

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
16

Dây

Chuỗi Python có thể được đặt trong dấu ngoặc đơn hoặc kép

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
17

Chuỗi nhiều dòng sử dụng cú pháp trích dẫn ba lần

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
18

Biến

Biến không cần khai báo kiểu

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
19

Bình luận

Nhận xét là một trong hai dòng

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
20

Chúng có thể là nhiều dòng bằng cách sử dụng mã thông báo trích dẫn ba lần để tạo một chuỗi không làm gì cả

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
21

in ấn

Các chuỗi và biến có thể được hiển thị bằng hàm

sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
86

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
22

Cấu trúc dữ liệu

Mảng kết hợp được gọi là 'từ điển'

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
23

Mảng có thứ tự được gọi là 'danh sách'

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
24

Danh sách có thể được truy cập thông qua các chỉ mục

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
25

Bộ dữ liệu giống như danh sách nhưng không thể thay đổi sau khi chúng được tạo. Chúng được tạo bằng dấu ngoặc đơn

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
26

Các giá trị riêng lẻ trong một bộ có thể được gán cho các biến như

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
27

Bây giờ biến v1 chứa 3, biến v2 chứa 7 và biến v3 chứa 10

Giá trị trong một bộ dữ liệu mục nhập đơn như "_______1023" có thể được gán cho một biến bằng cách đặt dấu phẩy sau tên biến như

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
28

Nếu nhiệm vụ là

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
29

thì

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
024 sẽ chứa toàn bộ bộ dữ liệu "
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
023"

Các đối tượng

Mọi thứ trong Python đều là đối tượng. Ví dụ, với danh sách

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
026 ở trên, phương thức
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
027 có thể được sử dụng để thêm một giá trị vào danh sách

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
30

Bây giờ

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
026 chứa
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
029

Kiểm soát lưu lượng

Luồng mã có thể được kiểm soát bằng các bài kiểm tra và vòng lặp. Các câu lệnh

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
030/
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
031/
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
032 trông giống như

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
31

Điều này cũng cho thấy cách các mệnh đề được phân tách bằng dấu hai chấm và mỗi khối mã con được thụt vào

vòng lặp

Một vòng lặp truyền thống là

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
32

Điều này in các số từ 0 đến 9. Giá trị của

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
033 được tăng lên trong mỗi lần lặp lại

Lệnh '

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
034' cũng có thể được sử dụng để lặp lại các danh sách và bộ dữ liệu

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
33

Điều này lần lượt đặt

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
035 cho từng phần tử của danh sách
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
036

Chức năng

Một chức năng có thể được định nghĩa là

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
34

Các chức năng có thể hoặc không thể trả về giá trị. Chức năng này có thể được gọi bằng cách sử dụng

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
35

Lời gọi hàm phải xuất hiện sau định nghĩa hàm của chúng

Hàm cũng là đối tượng và có thuộc tính. Thuộc tính có sẵn

sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
037 có thể được sử dụng để tìm mô tả chức năng

Chủ Đề