PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để dịch PostgreSQL OID bằng python

Bạn có thể chuyển đổi "OID" thành văn bản chỉ bằng cách truyền - cung cấp OID (Mã nhận dạng đối tượng) thực sự là một regtype (kiểu con OID cho các loại đã đăng ký) như bạn sẽ nhận được từ hàm pg_typeof () .

Postgres thông thường sẽ hiển thị các giá trị của kiểu dữ liệu regtype dưới dạng văn bản cho người dùng. Ví dụ:

SELECT pg_typeof('2013-1-1'::date);
 pg_typeof
-----------
 date

Trong khi bên trong nó là một OID:

SELECT pg_typeof('2013-1-1'::date)::oid;
 pg_typeof
-----------
      1082

Nếu khách hàng của bạn không làm như vậy, bạn có thể ép buộc nó với một diễn viên rõ ràng:

SELECT pg_typeof('2013-1-1'::date)::text;
SELECT 1082::regtype::text;

Nhận loại của tất cả các cột từ danh mục hệ thống

Không rõ như thế nào bạn thực sự truy xuất các loại. Hãy xem xét truy vấn này để có đầy đủ thông tin:

SELECT attname
     , atttypid::regtype AS base_type
     , format_type(atttypid, atttypmod) AS full_type
FROM   pg_catalog.pg_attribute
WHERE  attrelid = 'public.tbl'::regclass  -- your table name here
AND    attnum > 0
AND    NOT attisdropped
ORDER  BY attnum;

  attname   |          base_type          |         full_type
------------+-----------------------------+-----------------------------
 age_id     | integer                     | integer
 age        | text                        | text
 ageabk     | character                   | character(2)
 foo        | boolean                     | boolean
 log_up     | timestamp without time zone | timestamp without time zone

Lưu ý rằng format_type (..) hiển thị loại bao gồm cả bổ ngữ.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để nhập các tệp * .sql hiện có trong PostgreSQL 8.4?

  2. postgres bế tắc mà không có khóa rõ ràng

  3. Lỗi khi cài đặt Psycopg2 trên MacOS 10.9.5

  4. Tại sao pg_restore trả về các tùy chọn -d / - dbname và -f / - tệp không thể được sử dụng cùng nhau?

  5. Câu lệnh Postgresql CASE - tôi có thể sử dụng giá trị trả về của CASE trong phần SELECT của tôi không?