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
38Thư 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ụcsqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
40 có các tập lệnh với các thay đổi mã được đề xuấtTạ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ụcsqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
42 và chạy tập lệnhsqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
43 với tư cách là người dùng HỆ THỐNG chẳng hạncd 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ẫnCà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
0Lư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ụcsqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
47. Chúng được bao gồm trong các tệp Python và SQL khácChỉ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ệnhsqlplus -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
46sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
7Hướ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ànhsqlplus -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ú sauNế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
52Trong 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ànhsqlplus -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
58sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
8Mô-đ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ệusqlplus -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
47sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
3Chạy tập lệnh Python
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
4Số 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ắngsqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
0Lư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
2Chỉ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 tabMã 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
4Trong 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
5Chạy tập lệnh hoàn tất mà không có lỗi
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
4Nế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ỗi1. 5 Kiểm tra phiên bản
Xem lại mã có trong
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
69sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
7Chạ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
9Khi kịch bản được chạy, nó sẽ hiển thị
sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
0Lư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
70sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
1Hà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ọisqlplus -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ụngDò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ồngTrong 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ỗisqlplus -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ạiDò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ếnsqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
77. Nếu không có dấu phẩy, giá trị trongsqlplus -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
80Trong 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ứcsqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
80sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
3Trong một thiết bị đầu cuối lệnh, hãy chạy
sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
4Thử 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ầnHãy thử thay đổi
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
84 thànhsqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
85. Khisqlplus -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ọisqlplus -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ệu2. 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ụngDRCP 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
92sqlplus -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ứcsqlplus -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ácCá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ênChạy
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
92 trong cửa sổ đầu cuốisqlplus -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 DRCPsqlplus -l sys/syspassword@localhost/orclcdb as sysdba
7Logic 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
4Xem 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
9Thao 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_MISSESMột thử nghiệm khác là đưa mô-đun ________ 901 vào đầu tệp
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
00và 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ụngsqlplus -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
04sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
01Phươ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ệnhPhươ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ệnhVò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 raChạ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
033. 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
11sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
04Cá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
05Hai 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
13sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
06Phươ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
07Ba 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
083. 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
17sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
09Chạy tập lệnh trong cửa sổ đầu cuối
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
50Chỉ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
51Hã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
19sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
52Trong một cửa sổ đầu cuối chạy tập lệnh như
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
53Xem lại mã có trong
sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
20sqlplus -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ệuTrong một cửa sổ đầu cuối, hãy chạy
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
55Chạ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ànhsqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
56Chạ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
25sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
57Câ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
27Từ 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 chosqlplus -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
52cx_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ửasqlplus -l sys/syspassword@localhost/orclcdb as sysdba
25 và thêm một dòng ở cuốisqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
59Chạ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ệusqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
70Chạy tập lệnh như
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
71Xem lại mã có trong
sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
34sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
72Mảng '
sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
35' chứa dữ liệu cần chènCuộ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 ghiPhầ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
73Cá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ặpsqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
74Từ một cửa sổ đầu cuối, chạy
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
73Bả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 likesqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
76Chạy tập tin
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
73Mã 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
794. 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
90Sử dụng lệnh SQL*Plus DESCRIBE để xem định nghĩa SDO
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
91Nó 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
92Xem lại mã có trong
sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
39sqlplus -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ọisqlplus -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ằngsqlplus -l sys/syspassword@localhost/orclcdb as sysdba
42Chạy tập tin
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
94SDO 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
96Chạy lại tập tin
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
94Mà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/SQLTrướ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/SQLsqlplus -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ènsqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
99Chạy tập lệnh bằng cách sử dụng
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
80Xem lại mã có trong
sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
48sqlplus -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àmTừ 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/SQLsqlplus -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ề OUTsqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
83Chạy tập lệnh với
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
84Xem lại mã có trong
sqlplus -l sys/syspassword@localhost/orclcdb as sysdba
52sqlplus -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ụngTrong một cửa sổ đầu cuối, hãy chạy
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
86Phươ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
57sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
87Trong 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
58Thêm trình xử lý loại đầu ra vào cuối tệp
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
89Trì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
596. 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
60sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
31Chạ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
33Chỉ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
34Trì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 raChạ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
36Mặ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
376. 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
38Trong 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ớpsqlplus -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 Pythonsqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
39sau đó đượ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_Oraclesqlplus -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ứcsqlplus -l sys/syspassword@localhost/orclcdb as sysdba
67 được gọi bởi trình xử lý kiểu đầu vàosqlplus -l sys/syspassword@localhost/orclcdb as sysdba
71 bất cứ khi nào một thể hiện củasqlplus -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
73sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
42Thao 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
43Chỉ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
777. 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 đậmsqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
44OutputTypeHandler 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ệpsqlplus -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
82sqlplus -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àngChạy tập tin
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
47Cả 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ốisqlplus -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 đã choHà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óaChạy lại kịch bản
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
47Kế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
87sqlplus -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ốiTrong ứng dụng "bình thường", mã ứng dụng
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
01khô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ấnChạy tập tin
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
02Truy 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ứcsqlplus -l sys/syspassword@localhost/orclcdb as sysdba
05 với lớp MyCursor mớisqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
03Khi ứ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ứcsqlplus -l sys/syspassword@localhost/orclcdb as sysdba
05 mới trả về một thể hiện của lớpsqlplus -l sys/syspassword@localhost/orclcdb as sysdba
94 mới của chúng taMã 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ớpsqlplus -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
98sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
05Tệ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 trongsqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
000. Bây giờ hãy chạysqlplus -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úngThay đổ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
08Bâ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ệpsqlplus -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
010sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
09sqlplus -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ự độngPhươ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ậpsqlplus -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ọisqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
015Chạ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ọcsqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
11Chạy lại kịch bản
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
10Thao 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ướcSODA 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 25sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
13Chạ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ớisqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables
14Hoặ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_tables021. 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_tables15
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_tables16
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_tables17
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_tables18
Biến
Biến không cần khai báo kiểu
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables19
Bình luận
Nhận xét là một trong hai dòng
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables20
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_tables21
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 sysdba86
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables22
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_tables23
Mảng có thứ tự được gọi là 'danh sách'
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables24
Danh sách có thể được truy cập thông qua các chỉ mục
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables25
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_tables26
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_tables27
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_tables28
Nếu nhiệm vụ là
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables29
thì
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables024 sẽ chứa toàn bộ bộ dữ liệu "
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables023"
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_tables026 ở trên, phương thức
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables027 có thể được sử dụng để thêm một giá trị vào danh sách
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables30
Bây giờ
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables026 chứa
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables029
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_tables030/
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables031/
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables032 trông giống như
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables31
Đ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_tables32
Điều này in các số từ 0 đến 9. Giá trị của
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables033 được tăng lên trong mỗi lần lặp lại
Lệnh '
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables034' 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_tables33
Điều này lần lượt đặt
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables035 cho từng phần tử của danh sách
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables036
Chức năng
Một chức năng có thể được định nghĩa là
sqlplus -l pythonhol/welcome@localhost/orclpdb1 @setup_tables34
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_tables35
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_tables037 có thể được sử dụng để tìm mô tả chức năng