VARCHAR versus TEXT when using psychopg2, sqlalchemy and redshift

Поиск
Список
Период
Сортировка
От Christopher Brooks
Тема VARCHAR versus TEXT when using psychopg2, sqlalchemy and redshift
Дата
Msg-id CAJQ6OJMr+nnmzFP4Tt-f41+sysGZ_aTd_h7hEoRBddsTPwaHEQ@mail.gmail.com
обсуждение исходный текст
Ответы Re: VARCHAR versus TEXT when using psychopg2, sqlalchemy and redshift  (Christophe Pettus <xof@thebuild.com>)
Список psycopg
I'm using SQLAlchemy backed by psychopg2 to interact with my data inside of AWS Redshift.  I'm trying to insert data and am getting a perplexing error with respect to text vs varchar data.  Here is a source snipit:

conn = get_db_connection()
keys=["a","b"]
values=["aa","bb"]

tbl_qualtrics_dim = Table('qualtrics_dim', metadata,
                 Column('k', String(1024), primary_key=True),
                 Column('v', String(1024), nullable=False)
                 )
metadata.create_all(conn, checkfirst=True)
ins = tbl_qualtrics_dim.insert().values(k=keys, v=values)
conn.execute(ins)

This creates the table just fine as being two columns of varchar(1024).  AWS doesn't support clob types.  The last line throws an error though when trying to insert data:

sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) column "k" is of type character varying but expression is of type text[]
HINT:  You will need to rewrite or cast the expression.
 [SQL: 'INSERT INTO qualtrics_dim (k, v) VALUES (%(k)s, %(v)s)'] [parameters: {'v': ['aa', 'bb'], 'k': ['a', 'b']}]

A cast as I understand it doesn't work, e.g. I change this line:

ins = tbl_qualtrics_dim.insert().values(k=cast(keys, String(1024)), v=values)

And I get a casting error:

sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) cannot cast type text[] to character varying
 [SQL: 'INSERT INTO qualtrics_dim (k, v) VALUES (CAST(%(param_1)s AS VARCHAR(1024)), %(v)s)'] [parameters: {'v': ['aa', 'bb'], 'param_1': ['a', 'b']}]

Any hints on what might be going wrong here? 

Regards,

Chris

В списке psycopg по дате отправления:

Предыдущее
От: Gregory Arenius
Дата:
Сообщение: Re: How do I convert numpy NaN objects to SQL nulls?
Следующее
От: Christophe Pettus
Дата:
Сообщение: Re: VARCHAR versus TEXT when using psychopg2, sqlalchemy and redshift