From c0710262a1ccd17d6cd97f1089fb4402cde2059c Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Fri, 19 Feb 2021 11:34:47 -0500 Subject: [PATCH] Added xls output. --- main.py | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 51 insertions(+), 7 deletions(-) diff --git a/main.py b/main.py index 6624cfd..dabc13e 100644 --- a/main.py +++ b/main.py @@ -1,9 +1,11 @@ from sqlalchemy import create_engine, Column, Integer, String, BOOLEAN from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker +import xlwt UserAddressID = [] ActiveUser = [] +LineCount = 1 engine = create_engine('mssql+pymssql://IDV2Ridge:cWZSGWXS9muyYkHN*@10.10.10.50/IDV2Ridge', echo=False) engine.connect() @@ -17,7 +19,7 @@ class UserAddress(Base): AddressId = Column(Integer, primary_key=True) -class Address(Base) : +class Address(Base): __tablename__ = 'Address' Id = Column(Integer, primary_key=True) @@ -47,23 +49,48 @@ class State(Base): Id = Column(Integer, primary_key=True) StateName = Column(String) + class Country(Base): __tablename__ = 'Country' Id = Column(Integer, primary_key=True) CountryName = Column(String) + Session = sessionmaker(bind=engine) session = Session() # Get list of active users -for user in session.query(User).filter(User.ID == 1): +for user in session.query(User).filter(User.ID == 14): ActiveUser.append([user.ID, user.FirstName, user.LastName]) # loop through each user in the ActiveUser array for each in ActiveUser: # Combine Users First/Last name into single variable - UserName = each[1] + ' ' + each[2] - print(UserName) + FileName = each[1] + ' ' + each[2] + UserName = each[1][0]+each[2] + +# Setup XLS workbook and sheet + wb = xlwt.Workbook() + ws = wb.add_sheet('Addresses') + +# Write header row + ws.write(0,0,'ACTION') + ws.write(0,1,'BU_ID') + ws.write(0,2,'LOGIN_ID') + ws.write(0,3,'PA_NAME') + ws.write(0,4, 'PA_NAME2') + ws.write(0,5,'LINE1') + ws.write(0,6,'LINE2') + ws.write(0,7,'LINE3') + ws.write(0,8,'CITY') + ws.write(0,9,'STATE') + ws.write(0,10,'ZIP') + ws.write(0,11,'COUNTRY') + ws.write(0,12,'PHONE_NR') + ws.write(0,13,'SHIP_TO_ATTN_TX') + ws.write(0,14, 'PROFILE_TYPE') + + # For each username we're filtering the UserAddress table by their userID and adding it to the UserAddressID array. # The UserAddressID array is then looped through and for each AddressID we pull the Address information, # State Information, and Country Information and combine it into one result @@ -71,7 +98,24 @@ for each in ActiveUser: for ua in session.query(UserAddress).filter(UserAddress.UserId == each[0]): UserAddressID.append(ua.AddressId) for aid in UserAddressID: - for cn in session.query(Address, State, Country).join(State, Address.StateId == State.Id).join(Country, Address.CountryId == Country.Id).filter(Address.Id == aid).all(): - print(cn[0].ContactName, cn[0].CompanyName, cn[0].Line1, cn[0].Line2, cn[0].City, cn[1].StateName, cn[0].PostalCode, cn[2].CountryName, cn[0].PhoneNumber, cn[0].EmailAddress) - UserAddressID = [] + for cn in session.query(Address, State, Country).join(State, Address.StateId == State.Id).join(Country, Address.CountryId == Country.Id).filter(Address.Id == aid): + # Combine all the required fields into one variable for simplicity + AddresssBookLine = UserName, cn[0].CompanyName, cn[0].Line1, cn[0].Line2, cn[0].City, cn[1].StateName, cn[0].PostalCode, cn[2].CountryName, cn[0].PhoneNumber,cn[0].ContactName + # Loop through each row and populate the variable columns with the corresponding AddressBookLine element + print(LineCount) + ws.write(LineCount, 2, AddresssBookLine[0]) + ws.write(LineCount, 3, AddresssBookLine[1]) + ws.write(LineCount, 5, AddresssBookLine[2]) + ws.write(LineCount, 6, AddresssBookLine[3]) + ws.write(LineCount, 8, AddresssBookLine[4]) + ws.write(LineCount, 9, AddresssBookLine[5]) + ws.write(LineCount, 10, AddresssBookLine[6]) + ws.write(LineCount, 11, AddresssBookLine[7]) + ws.write(LineCount, 12, AddresssBookLine[8]) + ws.write(LineCount, 13, AddresssBookLine[9]) + LineCount = LineCount + 1 + print(LineCount) + UserAddressID = [] + LineCount = 1 + wb.save(FileName+'.xls')