sql >> データベース >  >> RDS >> PostgreSQL

python + psycopg2 =不明なタイプ?

    更新されたmogrify()に基づく 出力では、文字列と日時が正しく解釈されているように見えます。 E'foo bar' Postgresの「エスケープ文字列定数」です。 \tのようなCスタイルのエスケープシーケンスを表すことができます タブの場合、テキストで。また、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.
    



    1. レコード全体を取得するための2つのテーブルの結合

    2. エラー:PHPのインストールにWordPressに必要なMySQL拡張機能がないようです

    3. SQLで四半期の月に基づいてデータを取得します

    4. SquirreLSQLクライアント3.7.1上のPL/SQL