-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathcsv_DB.py
More file actions
331 lines (284 loc) Β· 19.4 KB
/
csv_DB.py
File metadata and controls
331 lines (284 loc) Β· 19.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
"""
CodeCraft PMS Project
νμΌλͺ
: csv_DB.py
λ§μ§λ§ μμ λ μ§ : 2025/03/23
"""
import pymysql
from datetime import datetime
from mysql_connection import db_connect
import project_DB
# νλ‘μ νΈ μ 보λ₯Ό CSV νμΌλ‘ λ΄λ³΄λ΄λ ν¨μ
# νλ‘μ νΈ λ²νΈλ₯Ό λ§€κ° λ³μλ‘ λ°μμ ν΄λΉ νλ‘μ νΈμ μ 보, μ
무, μ§μ²λ, κ° μ°μΆλ¬Ό μ 보λ₯Ό CSV νμΌλ‘ λ΄λ³΄λΈλ€
# λ΄λ³΄λΈ CSV νμΌμ /var/lib/mysql/csv/ κ²½λ‘μ μ μ₯λλ€
def export_csv(pid):
connection = db_connect()
cur = connection.cursor(pymysql.cursors.DictCursor)
try:
csv_path = "/var/lib/mysql/csv/"
save_time = datetime.now().strftime("%y%m%d-%H%M%S")
save_csv_student = f"SELECT s_no, s_id, s_pw, s_name, s_email, dno FROM student INTO OUTFILE '{csv_path}student_{pid}_{save_time}.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n'"
cur.execute(save_csv_student)
save_csv_professor = f"SELECT f_no, f_id, f_pw, f_name, f_email, dno FROM professor INTO OUTFILE '{csv_path}professor_{pid}_{save_time}.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n'"
cur.execute(save_csv_professor)
save_csv_project = f"SELECT p_no, p_name, p_content, p_method, p_memcount, p_start, p_end, p_wizard, subj_no, dno, f_no FROM project WHERE p_no = {pid} INTO OUTFILE '{csv_path}project_{pid}_{save_time}.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n'"
cur.execute(save_csv_project)
save_csv_project_user = f"SELECT p_no, s_no, permission, role, comment FROM project_user WHERE p_no = {pid} INTO OUTFILE '{csv_path}project_user_{pid}_{save_time}.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n'"
cur.execute(save_csv_project_user)
save_csv_permission = f"SELECT p_no, s_no, leader, ro, user, wbs, od, mm, ut, rs, rp, om, task, llm FROM permission WHERE p_no = {pid} INTO OUTFILE '{csv_path}permission_{pid}_{save_time}.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n'"
cur.execute(save_csv_permission)
save_csv_grade = f"SELECT p_no, g_plan, g_require, g_design, g_progress, g_scm, g_cooperation, g_quality, g_tech, g_presentation, g_completion FROM grade WHERE p_no = {pid} INTO OUTFILE '{csv_path}grade_{pid}_{save_time}.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n'"
cur.execute(save_csv_grade)
save_csv_work = f"SELECT w_no, w_name, w_person, w_start, w_end, w_checked, p_no, s_no FROM work WHERE p_no = {pid} INTO OUTFILE '{csv_path}work_{pid}_{save_time}.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n'"
cur.execute(save_csv_work)
save_csv_progress = f"SELECT progress_no, group1, group2, group3, group4, work, output_file, manager, note, ratio, start_date, end_date, group1no, group2no, group3no, group4no, p_no FROM progress WHERE p_no = {pid} INTO OUTFILE '{csv_path}progress_{pid}_{save_time}.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n'"
cur.execute(save_csv_progress)
save_csv_doc_s = f"SELECT doc_s_no, doc_s_name, doc_s_overview, doc_s_goals, doc_s_range, doc_s_outcomes, doc_s_team, doc_s_stack, doc_s_start, doc_s_end, doc_s_date, p_no FROM doc_summary WHERE p_no = {pid} INTO OUTFILE '{csv_path}doc_s_{pid}_{save_time}.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n'"
cur.execute(save_csv_doc_s)
save_csv_doc_r = f"SELECT doc_r_no, doc_r_f_name, doc_r_f_content, doc_r_f_priority, doc_r_nf_name, doc_r_nf_content, doc_r_nf_priority, doc_r_s_name, doc_r_s_content, doc_r_date, p_no FROM doc_require WHERE p_no = {pid} INTO OUTFILE '{csv_path}doc_r_{pid}_{save_time}.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n'"
cur.execute(save_csv_doc_r)
save_csv_doc_m = f"SELECT doc_m_no, doc_m_title, doc_m_date, doc_m_loc, doc_m_member, doc_m_manager, doc_m_content, doc_m_result, p_no FROM doc_meeting WHERE p_no = {pid} INTO OUTFILE '{csv_path}doc_m_{pid}_{save_time}.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n'"
cur.execute(save_csv_doc_m)
save_csv_doc_t = f"SELECT doc_t_no, doc_t_name, doc_t_start, doc_t_end, doc_t_pass, p_no FROM doc_test WHERE p_no = {pid} INTO OUTFILE '{csv_path}doc_t_{pid}_{save_time}.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n'"
cur.execute(save_csv_doc_t)
save_csv_doc_rep = f"SELECT doc_rep_no, doc_rep_name, doc_rep_writer, doc_rep_date, doc_rep_pname, doc_rep_member, doc_rep_professor, doc_rep_research, doc_rep_design, doc_rep_arch, doc_rep_result, doc_rep_conclusion, p_no FROM doc_report WHERE p_no = {pid} INTO OUTFILE '{csv_path}doc_rep_{pid}_{save_time}.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n'"
cur.execute(save_csv_doc_rep)
save_csv_doc_a = f"SELECT doc_a_no, doc_a_name, doc_a_path, doc_type, doc_no, p_no FROM doc_attach WHERE p_no = {pid} INTO OUTFILE '{csv_path}doc_a_{pid}_{save_time}.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n'"
cur.execute(save_csv_doc_a)
save_csv_doc_other = f"SELECT file_no, file_name, file_path, file_date, s_no, p_no FROM doc_other WHERE p_no = {pid} INTO OUTFILE '{csv_path}doc_o_{pid}_{save_time}.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n'"
cur.execute(save_csv_doc_other)
connection.commit()
print(f"Info : DBμ μ μ₯λ νλ‘μ νΈ κ΄λ ¨ μ 보λ₯Ό λͺ¨λ CSV νμΌλ‘ μ μμ μΌλ‘ λ΄λ³΄λμ΅λλ€. λ΄λ³΄λΈ μκ° : [{save_time}]")
return True
except Exception as e:
print(f"Error [export_csv] : {e}")
return e
finally:
cur.close()
connection.close()
# CSV νμΌλ‘λΆν° νλ‘μ νΈ μ 보λ₯Ό λΆλ¬μμ DBμ μ μ₯νλ ν¨μ
# {μ°μΆλ¬Ό μ’
λ₯(λ¬Έμμ΄) : CSV νμΌ κ²½λ‘(λ¬Έμμ΄)} ννμ λμ
λ리λ₯Ό λ§€κ° λ³μλ‘ λ°μμ CSV νμΌμ λ΄μ©μ DBμ μ μ₯νλ€
# csv_dict = {
# "student" : "/var/lib/mysql/csv/student_10001_250105-153058.csv",
# "professor" : "/var/lib/mysql/csv/professor_10001_250105-153058.csv",
# "project" : "/var/lib/mysql/csv/project_10001_250105-153058.csv",
# "project_user" : "/var/lib/mysql/csv/project_user_10001_250105-153058.csv",
# "permission" : "/var/lib/mysql/csv/permission_10001_250105-153058.csv",
# "grade" : "/var/lib/mysql/csv/grade_10001_250105-153058.csv",
# "work" : "/var/lib/mysql/csv/work_10001_250105-153058.csv",
# "progress" : "/var/lib/mysql/csv/progress_10001_250105-153058.csv",
# "doc_summary" : "/var/lib/mysql/csv/doc_s_10001_250105-153058.csv",
# "doc_require" : "/var/lib/mysql/csv/doc_r_10001_250105-153058.csv",
# "doc_meeting" : "/var/lib/mysql/csv/doc_m_10001_250105-153058.csv",
# "doc_test" : "/var/lib/mysql/csv/doc_t_10001_250105-153058.csv",
# "doc_report" : "/var/lib/mysql/csv/doc_rep_10001_250105-153058.csv",
# "doc_attach" : "/var/lib/mysql/csv/doc_a_10001_250105-153058.csv",
# "doc_other" : "/var/lib/mysql/csv/doc_o_10001_250105-153058.csv"
# }
# μμ κ°μ΄ λμ
λ리λ₯Ό λ§λ€κ³ , import_csv(csv_dict, pid) μ κ°μ΄ ν¨μλ₯Ό νΈμΆνμ¬ μ¬μ©νλ€
# μ°Έκ³ : pid λ§€κ° λ³μλ νλ‘μ νΈλ₯Ό Import νκΈ° μ μ κΈ°μ‘΄μ νλ‘μ νΈ λ΄μ©μ μμ νλ λ°μ μ¬μ©λλ€
# μ°Έκ³ : λμ
λ리μ ν€λ μμ μ΄ λΆκ°λ₯νλ©°, CSV νμΌμ /var/lib/mysql/csv κ²½λ‘μ μ μ₯λμ΄ μμ΄μΌ νλ€
def import_csv(file_paths, pid):
connection = db_connect()
cur = connection.cursor(pymysql.cursors.DictCursor)
import_ok = []
import_fail = []
try:
project_DB.delete_project(pid)
if "student" in file_paths:
try:
load_csv_student = f"LOAD DATA INFILE '{file_paths['student']}' IGNORE INTO TABLE student FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n' (s_no, s_id, s_pw, s_name, s_email, dno)"
cur.execute(load_csv_student)
import_ok.append("student")
except Exception as e:
print(f"Error [import_csv :: student] : {e}")
import_fail.append("student")
if "professor" in file_paths:
try:
load_csv_professor = f"LOAD DATA INFILE '{file_paths['professor']}' IGNORE INTO TABLE professor FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n' (f_no, f_id, f_pw, f_name, f_email, dno)"
cur.execute(load_csv_professor)
import_ok.append("professor")
except Exception as e:
print(f"Error [import_csv :: professor] : {e}")
import_fail.append("professor")
if "project" in file_paths:
try:
load_csv_project = f"LOAD DATA INFILE '{file_paths['project']}' INTO TABLE project FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n' (p_no, p_name, p_content, p_method, p_memcount, p_start, p_end, p_wizard, subj_no, dno, f_no)"
cur.execute(load_csv_project)
import_ok.append("project")
except Exception as e:
print(f"Error [import_csv :: project] : {e}")
import_fail.append("project")
if "project_user" in file_paths:
try:
load_csv_project_user = f"LOAD DATA INFILE '{file_paths['project_user']}' INTO TABLE project_user FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n' (p_no, s_no, permission, role, comment)"
cur.execute(load_csv_project_user)
import_ok.append("project_user")
except Exception as e:
print(f"Error [import_csv :: project_user] : {e}")
import_fail.append("project_user")
if "permission" in file_paths:
try:
load_csv_permission = f"LOAD DATA INFILE '{file_paths['permission']}' INTO TABLE permission FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n' (p_no, s_no, leader, ro, user, wbs, od, mm, ut, rs, rp, om, task, llm)"
cur.execute(load_csv_permission)
import_ok.append("permission")
except Exception as e:
print(f"Error [import_csv :: permission] : {e}")
import_fail.append("permission")
if "grade" in file_paths:
try:
load_csv_grade = f"LOAD DATA INFILE '{file_paths['grade']}' INTO TABLE grade FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n' (p_no, g_plan, g_require, g_design, g_progress, g_scm, g_cooperation, g_quality, g_tech, g_presentation, g_completion)"
cur.execute(load_csv_grade)
import_ok.append("grade")
except Exception as e:
print(f"Error [import_csv :: grade] : {e}")
import_fail.append("grade")
if "work" in file_paths:
try:
load_csv_work = f"LOAD DATA INFILE '{file_paths['work']}' INTO TABLE work FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n' (w_no, w_name, w_person, w_start, w_end, w_checked, p_no, s_no)"
cur.execute(load_csv_work)
import_ok.append("work")
except Exception as e:
print(f"Error [import_csv :: work] : {e}")
import_fail.append("work")
if "progress" in file_paths:
try:
load_csv_progress = f"LOAD DATA INFILE '{file_paths['progress']}' INTO TABLE progress FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n' (progress_no, group1, group2, group3, group4, work, output_file, manager, note, ratio, start_date, end_date, group1no, group2no, group3no, group4no, p_no)"
cur.execute(load_csv_progress)
import_ok.append("progress")
except Exception as e:
print(f"Error [import_csv :: progress] : {e}")
import_fail.append("progress")
if "doc_summary" in file_paths:
try:
load_csv_doc_s = f"LOAD DATA INFILE '{file_paths['doc_summary']}' INTO TABLE doc_summary FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n' (doc_s_no, doc_s_name, doc_s_overview, doc_s_goals, doc_s_range, doc_s_outcomes, doc_s_team, doc_s_stack, doc_s_start, doc_s_end, doc_s_date, p_no)"
cur.execute(load_csv_doc_s)
import_ok.append("doc_summary")
except Exception as e:
print(f"Error [import_csv :: doc_summary] : {e}")
import_fail.append("doc_summary")
if "doc_require" in file_paths:
try:
load_csv_doc_r = f"LOAD DATA INFILE '{file_paths['doc_require']}' INTO TABLE doc_require FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n' (doc_r_no, doc_r_f_name, doc_r_f_content, doc_r_f_priority, doc_r_nf_name, doc_r_nf_content, doc_r_nf_priority, doc_r_s_name, doc_r_s_content, doc_r_date, p_no)"
cur.execute(load_csv_doc_r)
import_ok.append("doc_require")
except Exception as e:
print(f"Error [import_csv :: doc_require] : {e}")
import_fail.append("doc_require")
if "doc_meeting" in file_paths:
try:
load_csv_doc_m = f"LOAD DATA INFILE '{file_paths['doc_meeting']}' INTO TABLE doc_meeting FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n' (doc_m_no, doc_m_title, doc_m_date, doc_m_loc, doc_m_member, doc_m_manager, doc_m_content, doc_m_result, p_no)"
cur.execute(load_csv_doc_m)
import_ok.append("doc_meeting")
except Exception as e:
print(f"Error [import_csv :: doc_meeting] : {e}")
import_fail.append("doc_meeting")
if "doc_test" in file_paths:
try:
load_csv_doc_t = f"LOAD DATA INFILE '{file_paths['doc_test']}' INTO TABLE doc_test FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n' (doc_t_no, doc_t_name, doc_t_start, doc_t_end, doc_t_pass, p_no)"
cur.execute(load_csv_doc_t)
import_ok.append("doc_test")
except Exception as e:
print(f"Error [import_csv :: doc_test] : {e}")
import_fail.append("doc_test")
if "doc_report" in file_paths:
try:
load_csv_doc_rep = f"LOAD DATA INFILE '{file_paths['doc_report']}' INTO TABLE doc_report FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n' (doc_rep_no, doc_rep_name, doc_rep_writer, doc_rep_date, doc_rep_pname, doc_rep_member, doc_rep_professor, doc_rep_research, doc_rep_design, doc_rep_arch, doc_rep_result, doc_rep_conclusion, p_no)"
cur.execute(load_csv_doc_rep)
import_ok.append("doc_report")
except Exception as e:
print(f"Error [import_csv :: doc_report] : {e}")
import_fail.append("doc_report")
if "doc_attach" in file_paths:
try:
load_csv_doc_a = f"LOAD DATA INFILE '{file_paths['doc_attach']}' INTO TABLE doc_attach FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n' (doc_a_no, doc_a_name, doc_a_path, doc_type, doc_no, p_no)"
cur.execute(load_csv_doc_a)
import_ok.append("doc_attach")
except Exception as e:
print(f"Error [import_csv :: doc_attach] : {e}")
import_fail.append("doc_attach")
if "doc_other" in file_paths:
try:
load_csv_doc_other = f"LOAD DATA INFILE '{file_paths['doc_other']}' INTO TABLE doc_other FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' LINES TERMINATED BY '\\n' (file_no, file_name, file_path, file_date, s_no, p_no)"
cur.execute(load_csv_doc_other)
import_ok.append("doc_other")
except Exception as e:
print(f"Error [import_csv :: doc_other] : {e}")
import_fail.append("doc_other")
connection.commit()
if not import_fail:
print("Info : λͺ¨λ CSV νμΌλ‘λΆν° νλ‘μ νΈ μ 보λ₯Ό λΆλ¬μμ DBμ μ μ₯νμμ΅λλ€.")
print(f"Info : {len(import_ok)}κ°μ ν
μ΄λΈμ DBμ λΆλ¬μμ΅λλ€.")
return True
else:
print(f"Info : {len(import_ok)}κ°μ ν
μ΄λΈμ DBμ λΆλ¬μμ΅λλ€.")
print(f"Warning : λΆλ¬μ€μ§ λͺ»ν ν
μ΄λΈμ [{', '.join(import_fail)}] μ
λλ€.")
return False
except Exception as e:
print(f"Error [import_csv] : {e}")
return e
finally:
cur.close()
connection.close()
# νλ‘μ νΈ Import/Export κΈ°λ₯μμ νμ¬ νλ‘μ νΈμ λ²μ μ 보λ₯Ό history ν
μ΄λΈμ μ μ₯νλ ν¨μ
# νλ‘μ νΈ λ²νΈ, νμ¬ μ¬μ©μμ νλ², λ©μμ§λ₯Ό λ§€κ° λ³μλ‘ λ°λλ€
# μ°Έκ³ : msg λ§€κ° λ³μλ API μλ²λ‘λΆν° 'Revert z to x' ννμ λ¬Έμμ΄μ κ·Έλλ‘ λ°λλ€
def insert_csv_history(pid, univ_id, msg):
connection = db_connect()
cur = connection.cursor(pymysql.cursors.DictCursor)
try:
save_history = f"INSERT INTO history (p_no, ver, date, s_no, msg) VALUES ({pid}, nextval({pid}), NOW(), {univ_id}, '{msg}')"
cur.execute(save_history)
connection.commit()
return True
except Exception as e:
print(f"Error [insert_csv_history] : {e}")
return e
finally:
cur.close()
connection.close()
# νλ‘μ νΈ Import/Export κΈ°λ₯μμ νμ¬ νλ‘μ νΈμ λͺ¨λ λ²μ μ 보λ₯Ό μμ νλ ν¨μ
# νλ‘μ νΈ λ²νΈλ₯Ό λ§€κ° λ³μλ‘ λ°λλ€
def delete_csv_history(pid):
connection = db_connect()
cur = connection.cursor(pymysql.cursors.DictCursor)
try:
cur.execute("DELETE FROM history WHERE p_no = %s", (pid,))
cur.execute("CALL create_sequence(%s)", (pid,))
connection.commit()
return True
except Exception as e:
print(f"Error [delete_csv_history] : {e}")
return e
finally:
cur.close()
connection.close()
# νλ‘μ νΈ Import/Export κΈ°λ₯μμ νμ¬ νλ‘μ νΈμ λͺ¨λ λ²μ μ 보λ₯Ό μ‘°ννλ ν¨μ
# νλ‘μ νΈ λ²νΈλ₯Ό λ§€κ° λ³μλ‘ λ°λλ€
def fetch_csv_history(pid):
connection = db_connect()
cur = connection.cursor(pymysql.cursors.DictCursor)
try:
cur.execute("SELECT * FROM history WHERE p_no = %s ORDER BY ver DESC", (pid,))
result = cur.fetchall()
return result
except Exception as e:
print(f"Error [fetch_csv_history] : {e}")
return e
finally:
cur.close()
connection.close()
# νλ‘μ νΈ Import/Export κΈ°λ₯μμ νμ¬ νλ‘μ νΈμ λͺ¨λ λ²μ μ 보λ₯Ό μ‘°ννλ ν¨μ
# νλ²μ λ§€κ° λ³μλ‘ λ°λλ€
def fetch_csv_history_by_univid(univ_id):
connection = db_connect()
cur = connection.cursor(pymysql.cursors.DictCursor)
try:
cur.execute("SELECT * FROM history WHERE s_no = %s ORDER BY ver DESC", (univ_id,))
result = cur.fetchall()
return result
except Exception as e:
print(f"Error [fetch_csv_history_by_univid] : {e}")
return e
finally:
cur.close()
connection.close()