整数字段中的N / A.

时间:2016-10-11 17:22:53

标签: python postgresql

我使用Python将Excel导入postgreSQL。以下是我遇到问题的字段。实际销售价格是一个整数数据类型值,有一段时间但现在这个列包含一个N / A值,它正在炸毁我的Python脚本。有什么我可以添加到这个脚本,它将告诉它引入N / A而不将数据类型更改为varchar。

import psycopg2
import xlrd
book = xlrd.open_workbook("T:\DataDump\8888.xlsx")
sheet = book.sheet_by_name("ProjectConsolidated")
database = psycopg2.connect (database = "***", user="****")
cursor = database.cursor()
delete = """drop table if exists "Python".ProjectConsolidated"""
print (delete)
mydata = cursor.execute(delete)

cursor.execute('''CREATE TABLE "Python".ProjectConsolidated
   (DCAD_Prop_ID VARCHAR(25),
   Actual_Close_Date date,
   Actual_Sales_Price integer,
   );''')
print "Table created successfully"

query = """INSERT INTO "Python".ProjectConsolidated (DCAD_Prop_ID,
   Actual_Close_Date,  Actual_Sales_Price) 
VALUES (%s, %s, %s)"""
for r in range(1, sheet.nrows):
DCAD_Prop_ID = sheet.cell(r,0).value
Actual_Close_Date = None if not sheet.cell(r,1).value else xlrd.xldate.xldate_as_datetime(sheet.cell(r,1).value,book.datemode)
Actual_Sales_Price = None if not sheet.cell(r,2).value else sheet.cell(r,2).value
values = (DCAD_Prop_ID,
   Actual_Close_Date,  Actual_Sales_Price)
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" 

1 个答案:

答案 0 :(得分:1)

Actual_Sales_Price = None if not sheet.cell(r,61).value else sheet.cell(r,61).value

try:
    float(Actual_Sales_Price)
except (ValueError, TypeError):
    Actual_Sales_Price = None

如果python未能将您的实际销售价格转换为浮点数(大概是因为它不是数字),我们将ASP更改为Null。

您的数据库驱动程序应该知道如何将Python无法转换为Postgres。

您是否真的希望数据库中的实际销售价格为空,取决于您,尽管从提供的有限信息中听起来不对。