Я пишу некоторый код для чтения данных из базы данных сервера SQL и нахожу код работающим. Код выглядит некрасиво. Я надеюсь, что экспорт может дать мне подсказку и научить писать лучший код.
Этот код работает нормально. Но я беспокоюсь, что если база данных огромна, как миллион строк Добавление данных в Dict займет много времени. Однако я не знаю, как сделать это более эффективным. Более того, есть ли лучший способ построить нужный мне фрейм данных? Могу ли я не использовать dict? Заранее большое спасибо. Я с нетерпением жду, чтобы услышать.
import pandas as pd
col=['code','desc','group_n']
Dict={}
for i in range(len(col)):
Dict[col[i]]=[]
with pymssql.connect(server,sqluser,sqlpass,database) as conn:
with conn.cursor() as cursor:
sql = 'select VENDORCODE,VENDORDESCRIPTION,sgp.Name from STATUSCODEMAPPING as mapping
join STATUSCODESET as sset on mapping.STATUSCODESETID=sset.ID
join STATUSCODEGROUP as sgp on sgp.ID=mapping.GROUPID where sset.ID = %d
ORDER BY VENDORCODE'
cursor.execute(sql,(238473))
row = cursor.fetchone()
while row:
#print (str(row[0]) + ': ' + row[1] + ' '+row[2])
[Dict[col[i]].append(row[i]) for i in range(len(row))]
row = cursor.fetchone()
df_scmap=pd.DataFrame(Dict)
df_scmap.set_index(['code'],inplace=True)
df_scmap.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 595 entries, 1 to 850903
Data columns (total 2 columns):
desc 595 non-null object
group_n 595 non-null object
dtypes: object(2)
memory usage: 13.9+ KB