개발자의 길 52

[SQLAlchemy] SQLAlchemy 에서 DB 에 접근하는 방법 - 1

SQLALchemy 는 Python 언어의 서버 개발환경에서 사용할수있는 ORM 라이브러리중 하나이다. Flask 프레임워크로 작성된 서버에서 주로 이 ORM 을 사용하는데, SQLAlchemy 를 어떻게 사용하여 DB 에 접근하고 Table 에 있는 row 를 접근/제어하는 방법을 소개하고자 한다. SQLAlchemy 객체로 데이터베이스 연결을 수립하는 방법 from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db' # SQLite를 사용하는 예시 app.config['SQLALCHEMY_TRACK..

개발자의 길 2023.12.11

[MYSQL] OUTER JOIN 과 INNER JOIN

MYSQL 에서 꽤나 자주 쓰이는 join 에 대해 설명하고자 한다. join 은 두 테이블의 column 을 비교하여 일치하는 row 들을 조합하는 것이다. Inner Join Inner Join은 두 테이블 간의 교집합을 찾는 SQL 조인 방식이다. 이 방식은 두 테이블에서 일치하는 데이터만 반환한다. 예를 들어, '고객' 테이블과 '주문' 테이블을 Inner Join 하면, 주문 기록이 있는 고객 정보만을 가져온다. 사용 예 SELECT * FROM 고객 INNER JOIN 주문 ON 고객.고객ID = 주문.고객ID; 이 쿼리는 '고객'과 '주문' 테이블에서 고객 ID가 일치하는 레코드만을 선택한다. Outer Join Outer Join은 두 테이블의 합집합을 반환한다. 이 방식은 일치하는 데이터..

[Spring] 김영한의 스프링 핵심 원리 - 기본편 정리

* 개인 복습을 위한 게시글입니다. - IoC 컨테이너/ DI 컨테이너 객체를 생성하고 관리하면서 의존성을 주입하는 역할을 하는 인스턴스를 말한다. 여러 인터페이스가 존재하고 그 인터페이스에 어떤 구현객체를 생성해서 다른 인터페이스에서 사용하게 할지를 정하는 역할을 하는데, 이녀석이 존재함으로써 구현 객체에서 자신이 사용하는 인터페이스에 어떤 구현객체를 선택해야할지를 몰라도 된다. 기존에는 InterfaceA 를 구현하는 ImplementA가 InterfaceB 를 사용한다면, Init() 같은 함수나 생성자로 자신이 사용하는 구현객체를 선택하는 역할도 가지고 있었다면, 최근에는 DI 컨테이너 DiContainer 가 getAImplement, getBImplement 같은 함수를 제공함으로써 Inter..

개발자의 길 2023.07.16

[Network] OSI 7 Layer 정리

1. Physical Layer (물리 계층) - 모든 데이터는 1과 0으로 이루어져 있다 - 0과 1만 전송할 수 있다면 컴퓨터 간의 통신은 가능한데, 현대에서는 이를 전기/광 신호를 통해서 전달한다. 일정 수준 이상의 신호는 1, 일정 수준 이하의 신호는 0이 될 것이다. - 현실세계의 신호는 완벽하지 않다. 완벽히 똑같은 간격/세기로 신호를 주고받지 못하기 때문에, 신호를 받아서 이것이 0인지 1인지 전달하는 역할이 필요하다 - 위에서 현실세계의 신호를 0과 1, 즉 디지털 신호로 변환해주는 계층이 Physical Layer 이다. - 전기적 신호를 디지털 신호로 바꾸어 주는 하드웨어 모듈들이 Physical Layer 를 담당한다. 2. Data-link Layer (데이터 링크 계층) - 물리 ..

개발자의 길 2023.01.30

[Backend] OAuth 2.0 이란 무엇인가?

인터넷을 이용하다 보면 최근에는 대부분의 사이트에서 카카오톡으로 로그인, 네이버로 로그인 등의 서비스를 지원을 한다. 이때 사용되는 프로토콜이 OAuth 2.0 이라는 프로토콜인데, OAuth 는 위키에서 다음과 같은 의미를 가지고 있다. OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. 간단히 말하면 특정 사이트의 아이디 비밀번호 입력 없이, 신뢰 가능한 다른 사이트들의 정보를 제공함으로써 회원 서비스를 이용하게 해줄 때 사용되는 표준이다. 티스토리에서 카카오톡으로 로그인 하는 경우를 예를 들어 설명해 보겠다. OAuth 2.0 참여자 1..

개발자의 길 2022.05.01

[Backend] HTTP 기초 지식 정리

본 게시글은 인프런 김영한 님의강의 "모든 개발자를 위한 HTTP 웹 기본 지식" 을 수강한 후 정리한 게시글 임을 참고 바랍니다. https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard 모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런... www.inflearn.com 컴퓨터 간에 통신을 하는 방법 IP ( Internet protocol ) 주소 - 컴퓨터들은 IP 주소 ( 192.100.100.2 ) 를 통해 인터넷에 연결되어 있는 다른 컴퓨터들과 통신을 한다...

개발자의 길 2022.05.01

[Python3] Decorator(장식자) 란 무엇인가?

데코레이터의 작성 방법 개발을 하다 보면 여러 함수에 하나의 동작을 추가시키고 싶을 때가 있다. 대표적으로 함수의 시간 측정이 필요해서 함수 동작 앞,뒤로 로그를 찍는 등의 작업이 있다. 하지만 일일히 손으로 로그를 추가하는 건 매우 비효율적이며 유지보수도 힘들다. 파이썬에서는 이러한 작업을 데코레이터라는 기법을 이용해서 간단히 해결 할 수 있다. 우선 아래 예제를 보자. import datetime def doSomething(): print("do something") #우리는 위 함수를 아래와 같이 바꾸고 싶을 떄가 있다. def doSomethingWithLog(): print("start :" + str(datetime.datetime.now() ) ) print("do something") p..

개발자의 길 2022.03.06

[Python3] Nested function, First class function, Closure function 이란 무엇인가?

1. Nested function ( 중첩 함수 ) 중첩 함수는 간단히 말하면 함수 정의 안에 또하나의 함수가 정의될 수 있는데, 이때 함수 안에 정의된 함수를 중첩 함수라고 한다. 이 함수는 일반적으로는 해당 함수가 정의된 함수의 내부에서만 사용될 수 있다. def first(): print( "hey" ) def second(): return "hello" print( second() ) 2. First class function ( 일급함수 ) 일급 함수라는 개념은 파이썬에 한정된 개념이 아닌, CS 전반에 걸쳐서 통용되는 개념이다. 이 함수는 다음을 충족하는 함수이다. 1. 함수 내에 변수를 선언할 수 있다. 2. 함수의 매개변수로 다른 함수를 전달할 수 있다. 3. 함수의 반환값(return) ..

개발자의 길 2022.03.06

[Java][SpringBoot] "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 강의노트

스프링 웹 개발 기초 - 웹 화면을 Client 에 전달하는 방법 stsatic/index.html 을 올려두면 가장 첫 화면으로 등록된다 - Welcome page 기능. @Controller 로 등록된 class 에서 @GetMapping 으로 등록된 함수가 string 을 리턴할 때, 스프링에서 viewResolver 라는 녀석이 resources::templates/ 에서 리턴한 string 에 해당하는 html 파일을 웹 화면에 띄워준다. 정적 컨텐츠 resources::static 에 hello-static.html 이라는 html 파일이 있고, 웹에서 http://address/hello-static.html 이라는 주소로 요청을 했다 지차. 이 경우에 hello-static 과 연관된 Co..

개발자의 길 2021.12.22

[SQLite3][C++] database is malformed - DB 에 손상이 갔을 때.

여느때와 같이 bug ticket 이 들어왔나 보고 있던 중에, 내 모듈이 SQLite DB 에 저장한 데이터를 읽을 수 없었다는 이슈가 있었다. log 상으로는 어떠한 문제점도 보이지 않아서 설치된 DB 를 받아서 분석을 해 보았더니, 읽을 수 없었던 PK 를 SELECT 하려고 시도하니 database is malformed 라는 문구가 뜬 적이 있었다. 해당 로그에 대한 자료를 찾아보니 pragma integrity_check 라는 PRAGMA 를 이용해서 DB 가 손상되었는지 확인 할 수 있었지만, 손상되었다는 정보만 얻고 별 소득이 없었다. 결국에 해결해야 되는 것은 내가 구현한 모듈에서 DB 를 손상시킬 수 있는 동작을 하고 있었다는 점이기 때문이다. 우선 모듈은 DB 에 Read/Write ..

반응형