I have a csv file with several records that I am trying to import into a SQL table via a Python script. My csv file (now reduced to) just one row of 1s. Here is what I am trying to do (after successfully connecting to the database etc etc…):
def add_records(): with open('C:/testing/myCSV.csv') as csvFile: for row in csvFile: cursor.execute( "INSERT INTO MY_Table (thing1, thing2, thing3, thing4, thing5)" "VALUES (?)", row )
No matter how I format the data in the csv (right now it’s all 1s) I get the error:
There are more columns in the INSERT statement than values specified in the VALUES clause
Advertisement
Answer
You need to specify a value (or ?
placeholder) in the values
clause for each column you’re inserting:
cursor.execute( "INSERT INTO MY_Table (thing1, thing2, thing3, thing4, thing5)" "VALUES (?, ?, ?, ?, ?)", row )
EDIT:
row
is just a simple line read from a CSV file. You should probably use a csv reader to break it up to its individual components:
with open('C:/testing/myCSV.csv') as csvFile: csvReader = csv.reader(csvFile) for row in csvReader: cursor.execute( "INSERT INTO MY_Table (thing1, thing2, thing3, thing4, thing5)" "VALUES (?, ?, ?, ?, ?)", row )