我有一个Python脚本,使用PyODBC通过POST请求向服务器发送数据。在sqlserver表中有一列包含两个字段的值,我需要一个Python或SQL表达式。我的两个字段是解决方案代码和原因代码。你知道吗
所有原因代码都是数字,即1、2、3、4、39、54、6、7等。所有解决方案代码都是字母,即A、B、C、RBI、Q等
我的SQL server列类型包含所有值,它是一个字符串。你知道吗
列的名称是RESOLUTION\u CODE,但也包含reasoncode。你知道吗
什么是一个简单的表达式;if RESOLUTION_CODE contains integer then RESOLUTION_CODE is reason code
虽然仍然保持我的原始分辨率代码值,但它们是相互独立的,因此,如果有一行有原因,就没有分辨率,反之亦然。你知道吗
示例JSON输出,39
是分辨率,但应该是原因。你知道吗
{
"MetaData": {},
"SRData": {
"ListOfLa311MetalHouseholdAppliancesPickup": {
"La311MetalHouseholdAppliancesPickup": [
{
"DriverFirstName": "sal",
"DriverLastName": "Aguilar",
"HouseholdItem": "None",
"LastUpdatedBy": "SANSTAR1",
"Name": "063020150920409621",
"Type": "Metal/Household Appliances"
}
]
},
"ReasonCode": " ",
"ResolutionCode": "B",
"SRNumber": "1-20541231"
}
}
]
[
{
"MetaData": {},
"SRData": {
"ListOfLa311MetalHouseholdAppliancesPickup": {
"La311MetalHouseholdAppliancesPickup": [
{
"DriverFirstName": "SA",
"DriverLastName": "Aguilar",
"HouseholdItem": "None",
"LastUpdatedBy": "SANSTAR1",
"Name": "063020150550017771",
"Type": "Metal/Household Appliances"
}
]
},
"ReasonCode": " ",
"ResolutionCode": "RBI",
"SRNumber": "1-20529111"
}
}
]
[
{
"MetaData": {},
"SRData": {
"ListOfLa311MetalHouseholdAppliancesPickup": {
"La311MetalHouseholdAppliancesPickup": [
{
"DriverFirstName": "sal",
"DriverLastName": "Aguilar",
"HouseholdItem": "None",
"LastUpdatedBy": "SANSTAR1",
"Name": "063020150919014731",
"Type": "Metal/Household Appliances"
}
]
},
"ReasonCode": " ",
"ResolutionCode": "A",
"SRNumber": "1-20538411"
}
}
]
[
{
"MetaData": {},
"SRData": {
"ListOfLa311MetalHouseholdAppliancesPickup": {
"La311MetalHouseholdAppliancesPickup": [
{
"DriverFirstName": "SA",
"DriverLastName": "Aguilar",
"HouseholdItem": "None",
"LastUpdatedBy": "SANSTAR1",
"Name": "063020150856220561",
"Type": "Metal/Household Appliances"
}
]
},
"ReasonCode": " ",
"ResolutionCode": "39",
"SRNumber": "1-20539231"
}
}
]
[
{
"MetaData": {},
"SRData": {
"ListOfLa311MetalHouseholdAppliancesPickup": {
"La311MetalHouseholdAppliancesPickup": [
{
"DriverFirstName": "sal",
"DriverLastName": "Aguilar",
"HouseholdItem": "Trash Compactor",
"LastUpdatedBy": "SANSTAR1",
"Name": "063020150857132911",
"Type": "Metal/Household Appliances"
}
]
},
"ReasonCode": " ",
"ResolutionCode": "A",
"SRNumber": "1-20539291"
}
}
脚本示例:
connstr = 'DRIVER={SQL Server};SERVER=SVR;DATABASE=DB; UID=UID;PWD=PWD'
conn = pyodbc.connect(connstr)
cursor = conn.cursor()
FN_SRNumber = "SRNumber"
lFields = [FN_SRNumber, "RESOLUTION_CODE", "ITEM_1","ITEM_2", "ITEM_3", "ITEM_4", "ITEM_5", "ITEM_6","ITEM_7","ITEM_8", "ITEM_9", "ITEM_10", "UID","last_edited_user"]
#lFields = ["SRNumber"]
sFields = ""
for fld in lFields:
if(sFields==""):
sFields = fld
else:
sFields = sFields + "," + fld
#List of the fields you'd like to exclude, like ItemCount for example.
lFieldsExcluded = ["ITEM_1", "ITEM_2", "ITEM_3", "ITEM_4", "ITEM_5", "ITEM_6","ITEM_7","ITEM_8", "ITEM_9", "ITEM_10", "UID", "RESOLUTION_CODE", "last_edited_user"]
#sSQL = "SELECT SRNumber FROM {}".format(pyFC)
sSQL = "SELECT {} FROM {} {}".format(sFields, pyFC, clauseSBE)
print sSQL
cursor.execute(sSQL)
#columns = [column[0] for column in cursor.description]
columns = []
for column in cursor.description:
if not (column[0] in lFieldsExcluded):
columns.append(column[0])
try:
ii = 0
white_item_1 = ""
white_item_2 = ""
white_item_3 = ""
white_item_4 = ""
white_item_5 = ""
white_item_6 = ""
white_item_7 = ""
white_item_8 = ""
white_item_9 = ""
white_item_10 = ""
rescode = ""
reasoncode = " "
ewaste_uid = ""
last_edited_user = " "
for row in cursor.fetchall():
lResults = [] #make sure lResults are initiated here
lValues = []
for i in range(len(columns)):
lValues.append( str(row[i]))
white_item_1 = (str(row[lFields.index("ITEM_1")]))
white_item_2 = (str(row[lFields.index("ITEM_2")]))
white_item_3 = (str(row[lFields.index("ITEM_3")]))
white_item_4 = (str(row[lFields.index("ITEM_4")]))
white_item_5 = (str(row[lFields.index("ITEM_5")]))
white_item_6= (str(row[lFields.index("ITEM_6")]))
white_item_7 =(str(row[lFields.index("ITEM_7")]))
white_item_8 = (str(row[lFields.index("ITEM_8")]))
white_item_9 =(str(row[lFields.index("ITEM_9")]))
white_item_10 = (str(row[lFields.index("ITEM_10")]))
white_uid = (str(row[lFields.index("UID")]))
rescode = (str(row[lFields.index("RESOLUTION_CODE")])
last_edited_user = (str(row[lFields.index("last_edited_user")]))
#dResult = dict(zip(columns, row))
dResult = dict(zip(columns, lValues))
dResult.setdefault("ReasonCode", reasoncode)
dResult.setdefault("ResolutionCode",rescode )
d = dict()
d.setdefault("DriverFirstName",last_edited_user )
d.setdefault("DriverLastName","Aguilar" )
d.setdefault("LastUpdatedBy", "SANSTAR1")
d.setdefault("HouseholdItem", white_item_1)
d.setdefault("Type", "Metal/Household Appliances")
d.setdefault("Name", white_uid )
l311.append(d)
dL311 = dict()
dL311.setdefault("La311MetalHouseholdAppliancesPickup", l311)
dResult.setdefault("ListOfLa311MetalHouseholdAppliancesPickup",dL311)
except:
print "failed"
使用
if
表达式来实现这一点,例如-如果要为相反的情况设置空字符串(即如果设置了reasoncode,则要使用空字符串设置解析代码)。你知道吗
相关问题 更多 >
编程相关推荐