'How to format dataframe that can be inserted in SQL Server table using Python

I'm trying to insert records into my SQL Server table using Python. I defined sample data to insert and successfully inserted a record into my table 'CHANGE ADDRESS'.`

records = [['WO-00001' , 'TESTA', 'TESTB' , 'TESTC'],
           ['WO-00002' , 'TESTA', 'TESTB' , 'TESTC'], 
           ['WO-00003' , 'TESTA', 'TESTB' , 'TESTC']]
           
cursor = conn.cursor()
# Insert Dataframe into SQL Server:

insert_query = '''INSERT CHANGE_ADDRESS 
                  VALUES (?, ?, ?, ?);'''

for row in records:


    values = (row[0],row[1],row[2],row[3])
    cursor.execute(insert_query, values)
    print(row)

conn.commit()
cursor.close()

However, when I change my sample data and used my created df the data inserted was this. (Getting the values/letters of the column names)

R   O   I   D
R   O   _   N
T   _   A   D
R   _   A   D

and in print row

RO_ID
RO_NAME
T_ADDRESS
R_ADDRESS

Then, I tried to convert dataframe values.tolist

    records = df.values.tolist()
           
cursor = conn.cursor()
# Insert Dataframe into SQL Server:

insert_query = '''INSERT CHANGE_ADDRESS 
                  VALUES (?, ?, ?, ?);'''

for row in records:

    values = (row[0],row[1],row[2],row[3])
    cursor.execute(insert_query, values)
    print(row)

conn.commit()
cursor.close()

However, I got this error:

Invalid character value for cast specification

My Table columns are all set to VARCHAR.

MY df

             RO_ID           RO_NAME    T_ADDRESS    R_ADDRESS
0    WO-0000000351            STORE1    TEST CITY    TEST CITY
1              NaN            STORE2    TEST CITY          NaN
2              NaN      TEST GROCERY    TEST CITY          NaN
3              NaN             STORE    TEST CITY          NaN
4     WO0000000796   TEST PHARMACY     UNASSIGNED   UNASSIGNED
..             ...               ...          ...          ...
174  WO-0000000409  TEST GEN. MDSE.   TEST CITY  TEST CITY
175  WO-0000000371  TEST COUNTRYSIDE  TEST CITY  TEST CITY
176  WO-0000000371  TEST COUNTRYSIDE  TEST CITY  TEST CITY
177  WO-0000000371  TEST COUNTRYSIDE  TEST CITY  TEST CITY
178  WO-0000000371  TEST COUNTRYSIDE  TEST CITY  TEST CITY


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source