본문 바로가기
  • Fearless

프로그래밍언어20

[SQL] (5) 와일드카드 문자 이전글들을 통해 특정 범위에 분포하거나 특정값과 일치하는 데이터 호출법을 배웠다. 이번엔 특정 문자열이 포함되어있는 데이터를 찾는 방법을 배워보자. 시작에 앞서, LIKE는 predicate(술어)이지 연산자가 아니다. 와일드카드 검색은 문자열에서만 사용할 수 있다. SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE 'Fish%'; %는 가장 많이 사용되는 와일드카드다. %는 임의의 수(0포함)의 문자가 올 수 있음을 뜻한다. WHERE 절을 활용하여 조건문을 형성할 수 있고, 이 경우 논리연산자가 아닌 LIKE 술어가 활용된다. prod_name이 "Fish"로 시작하는 데이터를 찾아서 반환해준다. 결과는 "Fish bean bag toy"였다.. 2022. 7. 12.
[SQL] (4) 고급 데이터 필터링 AND OR 등 논리연산자를 활용하여 WHERE 조건문을 강화한다. SELECT DISTINCT date, time, price FROM future.kospi200 WHERE date BETWEEN 20220301 AND 20220331 AND price < 360 LIMIT 10; AND를 활용하여 3월 한달간 price < 360인 데이터를 호출한다. SELECT DISTINCT date, time, price FROM future.kospi200 WHERE date BETWEEN 20220301 AND 20220331 OR price < 360 LIMIT 10; OR을 활용하면 3월 데이터이거나, price < 360인 데이터가 반환된다. 이 경우 2월 당시 price < 360이었기 때문에 해당.. 2022. 7. 11.
[SQL] (3) 데이터 필터링 WHERE 절을 활용하여 데이터 필터링을 진행한다. SELECT DISTINCT date, time, price FROM future.kospi200 WHERE price>360 LIMIT 10; 특정 column data에 대한 조건문을 설정해줌으로써 일부 데이터만을 호출한다. 논리연산자를 활용하여 값에 대한 조건식을 지정해준다. SELECT DISTINCT date, time, price FROM future.kospi200 WHERE date=20220302 ORDER BY price LIMIT 10; 2022/03/02의 데이터를 price 오름차순대로 호출한다. SELECT DISTINCT date, time, price FROM future.kospi200 WHERE price BETWEEN .. 2022. 7. 10.
[SQL] (2) 데이터 정렬하기 데이터가 DB에 삽입된 순서로 출력되기 때문에 데이터 변동이 있다면 순서가 바뀔 수 있다. 따라서 데이터 호출 시에 정렬 순서를 명시하여 원하는 순서대로 데이터를 받아볼 수 있다. SELECT price FROM future.kospi200 ORDER BY price LIMIT 10; price column을 오름차순으로 정렬한다. 이 때 LIMIT을 붙이면 전체 price 데이터 중 가장 작은 데이터 10개를 반환한다. SELECT DISTINCT date FROM future.kospi200 ORDER BY price LIMIT 10; 꼭 요청한 column에 대해서만 정렬할 수 있는건 아니다. 위 예시처럼 price가 가장 낮았던 날짜만을 요청할 수도 있다. SELECT DISTINCT date,t.. 2022. 7. 8.
[SQL] (1) 데이터 가져오기 1. SELECT SELECT price FROM future.kospi200; column name으로 데이터 호출 FROM 뒤에는 database이름 SELECT buy, sell FROM future.kospi200; 다중호출은 comma로 SELECT * FROM future.kospi200; *(wildcard) 사용시 전체호출 2. DISTINCT SELECT DISTINCT date FROM future.kospi200; 중복 제거한 데이터호출 SELECT DISTINCT date, time FROM future.kospi200; 마찬가지로 다중호출 SELECT price FROM future.kospi200 LIMIT 20; LIMIT 20은 상위 20개만 호출 SELECT DISTINCT.. 2022. 7. 7.
[파이썬문법] 16. class 상속 & class/static method 1. 상속 다 적어놨다. super(). 쓰면 B,C __init__ 따로 선언안해줘도된다. 대신에 순서가 __mro__에 의해 결정된다. getArea()는 pass 때려놓고 자식 클래스가 overwrite해서 사용한다. 2. Class method & static method PI는 class variable, 사용할 때는 Circle.PI로 사용한다. 모든 instance가 공용으로 사용한다는 뜻. 객체 생성한다음에 거기다가 classmethod 하면 error발생 cls.__PI를 받는 classmethod 선언한 경우다. 바로 Circle에다가 get_area, get_circum 쓰면 된다. class attribute와는 무관하게 밖에서 pi를 직접 인자로 전달해서 실행하는 classmeth.. 2022. 4. 22.
[파이썬문법] 16. class 변수 & property & decorator 1. class variable num_act = 0은 class 변수다. 특정 class 구조를 공유하는 모든 instance가 공유하는 변수다. 위와 같이 account instance가 생성될 때마다 num_act += 1이 되면, 3개 instance가 형성되었기에 Account.num_act=3이 된다. 이 때 핵심은 동일한 클래스 구조가 공유하는 것이기에 Account.num_act로 사용되어야만 한다! __del__(self)는 del instance_name 하면 해당 instance 삭제시켜준다. print 함수가 전역변수를 불러와서 클래스변수는 print되지 않는 것이다. 좋은 예제인듯. 함수 내에서 생성된 지역변수는 함수가 끝나면 소멸되기 때문에 del d가 자동으로 실행된다. 그에 .. 2022. 4. 22.
[파이썬문법] 15. yield(generator) & lambda func 1. yield 아 진짜 하기 싫다 이거.. 여튼 시작. recursive한 방법은 비효율적이다. 너무 비효율적이다 비슷한 top-down 방식의 fibo는 두 방향으로 갈리기 때문에 엄청나게 비효율적이다. 효율적이다. 뒤에서부터 맨 앞으로, 거꾸로 출력 return하면 첫 반환하고 함수가 죽어버린다. next가 없어서 그만뒀다. tuple을 iterable로 만들어버렸고, next의 끝은 항상 stopiteration list comprehension a는 generator라서 필요할 때 특정값을 딱 넘겨준다. ex) for loop을 도는거니까 print(i)하면 다시 a한테 가는데 이 때 a는 list가 아니고 그냥 그 때 특정 값만 넘겨주고 바로 다음값을 구해서 대기하고 있음. 뭔소리냐면 0 전달.. 2022. 4. 22.
[파이썬문법] 14. 전역/지역변수 & *args/**kwargs 1. local vs global variable 잘 살피면 calculate 함수를 실행했음에도 total이 0임을 확인할 수 있는데, 이는 해당 함수 내에서 total이 재정의 되었기 때문에 지역변수로 기능함에 기인한다. 1) 지역변수간의 바뀜 2) 함수 내에서 전역변수를 불러와서 바꿨음 3) 리스트 객체의 주소값을 전달해서 값을 변경했기 때문에 바뀜(c언어 포인터 느낌) 당연한 얘기 당연한 얘기2 이미 전역변수로 선언된 variable을 함수에서 수정할 수 없음. 충돌이 발생하기 때문. 그냥 들고와서 쓸수도 있고, 동일한 이름을 가진 지역변수를 생성할 수도 있지만 수정은 안된다. 이 경우 함수 내에서 조작하는 pi가 전역변수임을 선언해주면 된다. global pi를 선언해주면 지금 내가 다루고 있는.. 2022. 4. 22.
[파이썬문법] 13. 고급파이썬문법(1) 1. __name__ == '__main__' %%writefile hello_mge.py print("I LOVE YOU") def hello_message(): print("Hello World") print("서강대학교") if __name__ == '__main__': hello_message() else: print('bye') %run hello_mge.py​ 위 파일을 실행할 경우 위에서부터 실행된다. 1) I LOVE YOU 2) __name__ = '__main__'이 True이기에, Hello World와 서강대학교가 순차적으로 출력된다. import hello_mge hello_mge.py를 모듈로서 import하는 경우를 생각해보면 main파일이 hello_mge가 아니기 때문에 1.. 2022. 4. 18.
[파이썬] openpyxl & selenium 활용법 from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from openpyxl import Workbook wb = Workbook() sheet = wb.active sheet.append(['date','region','normal','book']) def set_chrome_driver(): chrome_options = webdriver.ChromeOptions() driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), .. 2022. 2. 8.
[파이썬문법] 12. Threading(1) 필요할 때마다 야매로 배워서 써먹는중. 작성한 코드를 병렬적으로 실행시키기 위해선 Threading 모듈이 필요하다. import threading def sum(low, high): total = 0 for i in range(low, high): total += i print("Subthread", total) t = threading.Thread(target = sum, args(1,10000)) t.start() print("Main Thread") 가령 위 예시와 같이 최소, 최대의 인수를 넘겨받아 최소에서 최대까지의 합게를 반환하는 함수가 있다고 가정하자. 이 때 특정 thread를 통해 해당 함수를 실행하기 위해선 threading.Thread(target = 'method_name', ar.. 2022. 1. 21.
반응형