##Here 是我的代碼。我想擺脫這里的 for 回圈。你能在 python 中建議一個替代方法,它可以用于相同的邏輯##
usa_records = cursor.fetchall()
for k in csv_files:#reading csv files
with open(k, 'r') as f:
reader = csv.reader(f)
next(reader) # Skip the header row.
for row in reader:
status = 0
for m in usa_records:
if (m[6] == row[6]):
status = status 1
row[0] = m[0] if m[0] is not None else row[0]
row[1] = m[1] if m[1] is not None else row[1]
row[2] = m[2] if m[2] is not None else row[2]
row[3] = m[3] if m[3] is not None else
row[17] = m[17] if m[17] is not None else row[17]
sql_update_query = """Update usa set technology=%s, company_name=%s,contact_name=%s,first_name=%s,last_name=%s,title=%s,email=%s,person_linkedin_url=%s,web_address=%s,company_linkedin_url=%s,company_address=%s,city=%s,state=%s,company_phone=%s,employees=%s,industry=%s,country=%s where id = %s"""
cursor.execute(sql_update_query,
(row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8],
row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16],
row[17]))
conn.commit()
row_count = cursor.rowcount
print(row_count, "Records Updated")
break
else:
pass
if status == 0:
cursor.execute(
"INSERT INTO usa VALUES (%s, %s, %s, %s,%s, %s, %s, %s,%s, %s, %s, %s,%s, %s, %s, %s,%s,%s)",
row)
conn.commit()
print("created new data")
uj5u.com熱心網友回復:
一個好的方法是使用干凈的代碼原則并將您的邏輯劃分為更小的功能。這將減少嵌套并使您的代碼更具可讀性。
這是一些偽代碼:
usa_records = cursor.fetchall()
process_csv_files(csv_files, usa_records)
def process_csv_files(csv_files, usa_records):
for k in csv_files: #reading csv files
with open(k, 'r') as f:
reader = csv.reader(f)
next(reader) # Skip the header row.
process_csv_content(reader, usa_records)
def process_csv_content(reader):
for row in reader:
usa_record = find_usa_record_by_id(row[6], usa_records)
if not usa_record:
# INSERT in the database
else:
# UPDATE the database
def find_usa_record_by_id(id, usa_records):
# Implement a function that returns the record based on the given id.
pass
uj5u.com熱心網友回復:
您要洗掉 for 回圈的原因是什么?我的意思是,目標是什么?通過了解原因,我們可以提出不同的方法。
是關于“代碼可讀性”嗎?是因為性能嗎?這只是一個練習嗎?
uj5u.com熱心網友回復:
看看熊貓。看起來您所做的大部分作業都可以通過一些簡單的資料框操作來完成。例如,讀取 csv:https : //pandas.pydata.org/docs/reference/api/pandas.read_csv.html
而不是回圈遍歷行,您可以使用.apply:https : //pandas.pydata.org/docs/reference/api/pandas.DataFrame.apply.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/359200.html
上一篇:如何將二維串列轉換為資料框
