0

I have a postgresql table with this schema:

  id       terminated    code
string      boolean     integer

I want to add values from a pandas dataframe using this code:

param_dic = {
    "host"      : "xxx",
    "database"  : "xxxx",
    "user"      : "xxxxx",
    "password"  : "xxxx"
}



def connect(params_dic):
    """ Connect to the PostgreSQL database server """
    conn = None
    try:
        # connect to the PostgreSQL server
        print('Connecting to the PostgreSQL database...')
        conn = psycopg2.connect(**params_dic)
    except (Exception, psycopg2.DatabaseError) as error:
        print(error)
        sys.exit(1) 
    return conn

conn = connect(param_dic)

def single_insert(conn, insert_req):
    """ Execute a single INSERT request """
    cursor = conn.cursor()
    try:
        cursor.execute(insert_req)
        conn.commit()
    except (Exception, psycopg2.DatabaseError) as error:
        print("Error: %s" % error)
        conn.rollback()
        cursor.close()
        return 1
    cursor.close()

and then I am using:

for i in df.index:
    query = """
    INSERT into status(id, terminated, code) values('%s','%s','%s');
    """ % (df['id'], df['terminated'], df['code'])
    single_insert(conn, query)
# Close the connection
conn.close()

But I am getting this error msg:

Error: invalid input syntax for type boolean: "0       1
16      1
28      1
44      1
51      1
       ..
1604    1
1615    1

Can anyone help me with this?

datashout
  • 147
  • 7
  • 1) Proper parameter passing per [Parameter passing](https://www.psycopg.org/docs/usage.html#passing-parameters-to-sql-queries) would be a start. 2) What is `df['terminated']` actually resolving to? – Adrian Klaver Jan 26 '23 at 05:22

0 Answers0