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

python + psycopg2 =loại không xác định?

Dựa trên mogrify() đã cập nhật của bạn đầu ra, các chuỗi và ngày giờ của bạn dường như được diễn giải chính xác. E'foo bar' là "hằng số chuỗi thoát" của Postgres. Nó cho phép bạn biểu diễn các chuỗi thoát kiểu C, như \t cho tab, trong văn bản. Cũng là unknown bạn thấy trong psycopg2.ProgrammingError không có gì phải lo lắng, đó là hành vi bình thường. Trước tiên, bạn có thể kiểm tra xem số lượng đối số cho lệnh gọi hàm của mình có đúng không và có thể thử gọi thủ tục bằng một tham số viết tay để xác định tham số nào có thể gây ra sự cố:

Quy trình kiểm tra:

CREATE OR REPLACE FUNCTION
    foo (num INTEGER, name VARCHAR, ts TIMESTAMP)
RETURNS TABLE (num INTEGER, name VARCHAR, ts TIMESTAMP)
AS $$ SELECT $1, $2, $3; $$
LANGUAGE SQL;

Ví dụ:

% python
>>> import datetime
>>> import psycopg2
>>> conn = psycopg2.connect("user=postgres")
>>> r = conn.cursor()
>>> args = [1, "hello", datetime.datetime.now()]
>>> r.callproc('foo', args)
[1, 'hello', datetime.datetime(2011, 3, 10, 18, 51, 24, 904103)]

>>> r.callproc('fooxyz', args)
psycopg2.ProgrammingError: function fooxyz(integer, unknown, unknown) does not exist

LINE 1: SELECT * FROM fooxyz(1,E'hello','2011-03-10T18:51:24.904103'...
                      ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Datatables - Json output - PostgreSQL - Trả về null

  2. Làm thế nào để xử lý một giá trị tùy chọn được trả về bởi một truy vấn bằng cách sử dụng thùng postgres?

  3. Ví dụ về trình kích hoạt CHO MỖI STATEMENT

  4. những ngày liên tiếp trong sql

  5. Làm cách nào để tìm k láng giềng gần nhất cho geodjango?