Jul-20-2019, 05:10 PM
Hi
I got a code for a csv database where i can write a bit of data and it saves it to a csv file very simple.
My problem is that every time i start the code it overwrite the old csv file and i start up with an empty file. I have no ide what to do. Could any one help me out?
I got a code for a csv database where i can write a bit of data and it saves it to a csv file very simple.
My problem is that every time i start the code it overwrite the old csv file and i start up with an empty file. I have no ide what to do. Could any one help me out?
#imports
import csv
#Variables
current_ID = 1
new_additions = []
filename = "library.csv"
fields = ['ID', 'Title', 'Author', 'Genre', 'Year', 'Location']
data = []
#Code
with open(filename, 'w+') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
data.append(dict(row))
if len(data) > 0:
current_ID = data[:-1].get("ID")
current_ID = int(current_ID) + 1
print("------Welcome to the Python Library organiser------")
choice = ""
while choice.lower() != "x":
print("""What would you like to do?
1 - Add a book
2 - Display your Books
3 - Search for a Book""")
choice = input(">")
if choice == "1":
#Code to add a record
new_record = {
"ID": current_ID,
"Title": input("What is the title of the book? >"),
"Author": input("What is the author's first name? >"),
"Genre": input("What genre is the book? >"),
"Year": input("What year was the book released? >"),
"Location": input("Where is the book? > ")
}
new_additions.append(new_record)
current_ID = current_ID + 1
print("-"*15)
print("New Record added successfully!")
elif choice == "2":
#Display the data
for item in fields:
print("%-25s"%item, end='')
print("\n")
for row in data:
for key, val in row.items():
print("%-25s"%val, end='')
print("\n")
for row in new_additions:
for key, val in row.items():
print("%-25s"%val, end='')
print("\n")
elif choice == "3":
#Search the data
search_term = input("What would you like to search for?").lower()
results = []
for row in data:
for key, val in row.items():
if search_term in val.lower():
results.append(row)
for item in new_additions:
for key, val in item.items():
if search_term in val.lower():
results.append(item)
#Display the results
if len(results) > 0:
for item in fields:
print("%-25s"%item, end='')
print("\n")
for item in results:
for key, val in item.items():
print("%-25s"%val, end='')
print("\n")
else:
print("Sorry no records found")
elif choice.lower() == "x":
print("Thank you! Shutting down.")
else:
print("Sorry, I didnt recognise that option")
if len(new_additions) > 0:
with open(filename, 'a') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fields)
writer.writeheader()
for item in new_additions:
writer.writerow(item)
