배운 내용
- github (clone, branch, merge)
- DML 심화
- streamlit 과 mysql 연동
- streamlit 구현
- web crawling
- 첫 단위 프로젝트: 전국 자동차 등록 현황 및 기업 FAQ 조회 시스템
- 토이 프로젝트
1. github
- github에 new repo 생성시 readme.md 포함, 멤버 초대
- git clone (local folder > github repo url copy > git clone [url]
- branch : main < develop < feature
- feature별로 개발, develop에서 merge 및 확인 , 최종 main에서 반영
- feature별 개발시 develop을 git pull, push 하면서 하기
- create feature branch(local) > publish branch (local git) > commit > push (github) > merge to (develop branch)
2. DML
2-1. select문 실행 순서
- select / from (데이터 추출)
- where 1=1 and col =value (필터링)
- group by value (결과 통계 정보 조회)
- having (결과 통계 필터링)
- order by desc/asc ( 정렬 / 오름차순,내림차순)
2-2. 연습해보기
# 제일 잘팔리는 차종의 수입을 내림차순으로 보이기
select p.productLine,
sum(od.quantityOrdered*od.priceEach) as revenue
FROM
orderdetails od
left join products p
on od.productCode = p.productCode
where 1=1
group by p.productLine
order by revenue desc;
# 제일 잘 팔리는 물건의 이름과 그 이름이 19로 시작할 것, 총 매출이 10만이 넘을 것
select p.productName,
sum(od.quantityOrdered*od.priceEach) as revenue
from
orderdetails od
left join products p
on od.productCode = p.productCode
where 1=1
and p.productName like '19%'
group by p.productName
having revenue > 100000
2-3. where vs having
SELECT department, COUNT(*) AS employee_count
FROM employees
WHERE status = 'active' -- 상태가 'active'인 직원만 고려
GROUP BY department
HAVING employee_count > 5; -- 각 부서의 active 직원 수가 5명 초과인 경우만 선택
- where : table row 직접 filtering
- having: group by로 그룹화 후 집계 결과 필터링
3. MySQL & python
- 설치 라이브러리:
- PyMySQL(python과 MySQL 연결,관리)
- SQLAlchemy(python ORM)
- mysqlclient (C library에 의존하는 MySQL 드라이버)
- connection 정보를 connection 객체에 전달, 커서를 생성 sql 문 전달
- streamlit에서는 .streamlit/.secrets.toml 만들어서 그 안에 계정 정보 저장해서 쓰기
4. streamlit
- 마크다운, 노션과 비슷하게 돌아간다고 생각하면 쉬움. 위젯같은 건 공식 다큐먼트 보면서 찾아서 갖다 쓰면 된다.
- st.titlle(), st.header(), st.subheader(), st.caption(), st.code(), st.markdown(), st.latex(공식)
- st.dataframe(df)
- st.checkbox('checkbox str',value=False, key='use_container_width') : 자동으로 넓어짐
- st.button() , if st.button('hey'):st.write('hello') , st.download_button()
- st.form() 외부에서 input 받음 -> st.text_input(), st.form_submit_button(), st.link_button()
- pages 폴더 안에 페이지 생성하여 multipages 가능
- st.checkbox(), st.toggle(), st.radio()
- st.area_chart(), st.bar_chart(),st.line_chart()
5. web crawling
- header에 user-agent, refer 꼭 등록해야 크롤링 가능, f12 로 개발자 도구 불러서 network > headers로 확인 가능
- header={'User-Agent':"...", "Referer":"..url.."}, response = requests.get(url=url, header=header)
- beautiful_text = bs(response.text, "html.parser") 로 response를 예쁘게 보는 것 가능
- reply_list = beautiful_text.find_all("dd",class_"usertxt") :html에서 dd 태그 중 css의 user_txt 클래스 가져오기
- reply_list_edited = [reply.get_text().replace('\n','').strip() for replay in reply_list]
6 . 단위 프로젝트 [전국 자동차 등록 현황 및 기업 FAQ 조회 시스템]
- 내가 DB와 프론트엔드를 할 줄 몰라서 좀 많이 헤맸다. 다행히 지피티와 팀원들 도움으로 어느정도 할 순 있었던 것 같다.
- 이전에 일했던 짬밥이 좀 남아있어서 인지 파일 트리라던가, 클린 코드, 프로젝트 결과물 완성도를 조금씩 신경 써서 팀원들에게 요구할 수 있었다. 조금 더 코드를 깔끔하게 하고 싶은 욕심이 있었는데 내가 깃에 대한 경험이 부족하여 작업에 속도가 붙지 못했다.
- 깃헙을 잘 몰라 피쳐 브랜치에서 머지하고 풀,푸쉬를 잘 하지 못하여 상당히 버벅였다. 좀 익숙해질 필요가 있는 것 같으나, 요즘은 liveshare도 있어서 이게 꼭 필요한가하는 의구심도 살짝 든다. 하지만 내가 모르는 것도 있을 거 같아 그냥 계속 써보면서 익혀보도록 한다.
- 디버깅을 할 때 어디다 써놓는 버릇을 계속 들여야겠다. 자꾸 디버깅하고 프로젝트 개발이 급해 그냥 넘어가게 된다. 그냥 메모장에라도 써놓고 나중에 블로그에 기록하자.
7. TODO (이번 설날 연휴 동안)
- 이번 단위 프로젝트 혼자서 3번은 만들어보기.
- 화면설계서, ERD / DB, crawling, streamlit/github, readme
- 다른 팀 깃헙 코드도 참고해보기.
- Toy project todo list 실행
- django안에서 upbit api로 받은 json 데이터 받고 표현
- backtesting library 아무거나 깔아서 quick start 돌려보기
- Design reference (blue)
- 매매 전략 구현하는 방법
- 고객별 API 키 암호화하는 방법
- 로그인 기능 구현
- React, Django 사용해보기
정말 알찬 시간이었다. 회사에서 제대로 써보지 못한 깃헙도 써보고, 디비도 직접 써보고, 프론트엔드도 해봤다. 사실 인공지능만 하면 되는 거 아닌가 했는데, 나중에 내 스스로 서비스를 만들어 팔 수도 있겠단 생각도 든다. 나중에 많은 회사들이 물어봤던 aws도 공부하게 되면 정말 완전체가 될 것만 같다. 후하후하 화이팅!
'개발공부 > SK Networks Family AI bootcamp 강의노트' 카테고리의 다른 글
13일차 [ 데이터분석: Pandas ] (0) | 2025.01.31 |
---|---|
12일차 [ Web Crawling2 ] (0) | 2025.01.22 |
토이 프로젝트 일정 (자동 코인 매매 봇) (0) | 2025.01.21 |
11일차 [ Web crawling ] (1) | 2025.01.21 |
11일차 [ streamlit ] (0) | 2025.01.21 |