Re: Concatenate 2 Column Values For One Column - Mailing list pgsql-general

From Adrian Klaver
Subject Re: Concatenate 2 Column Values For One Column
Date
Msg-id 5e58b800-a9d6-dbb7-f366-ebe97bbc0506@aklaver.com
Whole thread Raw
In response to Concatenate 2 Column Values For One Column  (tango ward <tangoward15@gmail.com>)
Responses Re: Concatenate 2 Column Values For One Column  (tango ward <tangoward15@gmail.com>)
List pgsql-general
On 05/08/2018 07:17 PM, tango ward wrote:
> Hi,
> 
> Sorry for asking question again.
> 
> I am trying to concatenate the value of column firstname and lastname 
> from source DB to name column of destination DB.
> 
> My code so far:
> 
> cur_t.execute("""
>                  SELECT firstname, lastname
>                  FROM authors;
>                  """)
> 
> for row in cur_t:
>      cur_p.execute("""
>                       INSERT INTO lib_author (
>                                                   created, modified, 
> last_name,
>                                                   first_name, country,
>                                                   school_id, name)
>                      VALUES (current_timestamp, current_timestamp, %s, 
> %s, %s,
>                              (SELECT id FROM ed_school WHERE name='My 
> Test School'),
>                              (SELECT CONCAT(first_name, ',', last_name) 
> AS name FROM lib_author LIMIT 1)
>                              )
>                      """, (row['lastname'], row['firstname'], ''))
> 
> The code will take the first and lastname of the FIRST data existing on 
> the destination table. I modified the code, instead of running SELECT 
> and CONCAT, I passed string formatter and call the row['firstname'], 
> row['lastname']
> 
> for row in cur_t:
>      cur_p.execute("""
>                       INSERT INTO lib_author (
>                                                   created, modified, 
> last_name,
>                                                   first_name, country,
>                                                   school_id, name)
>                      VALUES (current_timestamp, current_timestamp, %s, 
> %s, %s,
>                              (SELECT id FROM ed_school WHERE name='My 
> Test School'),
>                               %s
>                              )
>                      """, (row['lastname'], row['firstname'], '', 
> (row['firstname'], row['lastname']) )
> 
> The second code works but it includes the parenthesis in the DB.

That is because:

(row['firstname'], row['lastname'])

is making a Python tuple for entry into the last %s.

Not tested but try:

(row['firstname'] + ', ' + row['lastname'])

> 
> How can I remove the ( ) in the DB? I can't call the row['firstname'] 
> and row['lastname'] as values without using ( ).
> 
> Any suggestion is highly appreciated.
> 
> Thanks,
> J


-- 
Adrian Klaver
adrian.klaver@aklaver.com


pgsql-general by date:

Previous
From: tango ward
Date:
Subject: Re: Concatenate 2 Column Values For One Column
Next
From: tango ward
Date:
Subject: Re: Concatenate 2 Column Values For One Column