Try Statement Error
<p>I am new to Python and I am importing Excel data into postgreSQL. I have blank whitespaces in my Excel for the columns for Traffic and Week_Ending. The Try statement seems to function fine for the Week_Ending but for the Traffic it throws out an error. I checked the Excel and the error is showing up due to the single blank whitespace in one of the cells. I thought it would work for both the columns but it doesn't for the Traffic. Can anyone provide assistance please.</p>

<pre><code>import psycopg2
import xlrd
import datetime
book = xlrd.open_workbook("T:\DataDump\8888.xlsx")
sheet = book.sheet_by_name("Builder_Traffic")
database = psycopg2.connect (database = "***", user="*")

cursor = database.cursor()
delete = """Drop table if exists "Python".buildertraffic"""
print (delete)
mydata = cursor.execute(delete) 




cursor.execute('''CREATE TABLE "Python".buildertraffic
   (Builder_Name varchar(55),   
Traffic integer,
Week_Ending date,
Project_ID integer
   );''')

print "Table created successfully"

query = """INSERT INTO "Python".buildertraffic (Builder_Name, Traffic,  Week_Ending, Project_ID)
VALUES (%s, %s, %s, %s)"""

for r in range(1, sheet.nrows):
    Builder_Name = sheet.cell(r,0).value
    Traffic = None
    try:
        Traffic = (sheet.cell(r,1).value)
    except:
        pass
    Week_Ending = None
    try:
        Week_Ending = xlrd.xldate.xldate_as_datetime(sheet.cell(r,2).value,book.datemode)
    except:
        pass
    Project_ID = sheet.cell(r,3).value

values = (Builder_Name, Traffic, Week_Ending, Project_ID)
cursor.execute(query, values)

cursor.close()
database.commit()
database.close()

print ""
print "All Done! Bye, for now."
print ""
columns = str(sheet.ncols)
rows = str(sheet.nrows)
print "I just imported Excel into postgreSQL" 
</code></pre>

<p>And the error shows up as :</p>

<pre><code>Traceback (most recent call last):
File   "C:\Users\aqureshi\Desktop\Programming\PythonSQLNew\BuilderTraffic.py", line 47, in &lt;module&gt;
DataError: invalid input syntax for integer: " "
LINE 2: VALUES ('American Legend Homes', ' ', NULL, 2.0)
                                     ^
</code></pre>

<p>You should be checking for a blank or empty string in that column:</p>

<pre><code>traffic = sheet.cell(r, 1).value
</code></pre>

<p>I don't see in your code how you're actually executing the query but you should wrap traffic in int to parse an integer from a string: <a href="http://stackoverflow.com/questions/642154/how-to-convert-strings-into-integers-in-python">How to convert strings into integers in Python?</a></p>

<pre><code>try:
    traffic = int(sheet.cell(r, 1).value)
except:
    traffic = -1 # or 0? some value to indicate this has NO traffic.
</code></pre>

python excel