आपके अपडेट किए गए mogrify()
. के आधार पर आउटपुट, आपके तार और डेटाटाइम सही ढंग से व्याख्या किए गए प्रतीत होते हैं। E'foo bar'
Postgres '' "एस्केप स्ट्रिंग स्थिरांक" है। यह आपको \t
. जैसे सी-स्टाइल एस्केप सीक्वेंस का प्रतिनिधित्व करने देता है टैब के लिए, पाठ में। साथ ही unknown
आप psycopg2.ProgrammingError
. में देखते हैं चिंता की कोई बात नहीं है, यह सामान्य व्यवहार है। आप पहले जांच सकते हैं कि आपके फ़ंक्शन कॉल में तर्कों की संख्या सही है, और शायद यह पहचानने के लिए कि कौन से परम समस्या पैदा कर रहे हैं, प्रक्रिया को हाथ से लिखे गए पैरा के साथ कॉल करने का प्रयास करें:
परीक्षण प्रक्रिया:
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;
उदाहरण:
% 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.