mysql

CS/SQL

[MySQL] 하나의 글과 연관된 여러 개의 이미지 추출하는 쿼리 작성하기 (feat. GROUP_CONCAT)

하나의 글에 연관된 여러 개의 이미지 출력하고 싶을 때가 있다. 인스타그램을 떠올려보면 쉽게 이해가 갈 것이다. 우리가 원하는 데이터의 형태는 게시물(post) 하나에 여러 개의 이미지가 묶여서 하나의 행으로 구성되는 것이다(이때, 이미지는 blob형태가 아닌 varchar로 주소의 형태로 저장된다고 가정한다). 말로 하면 살짝 이상한데, 객체 형태로 표현하자면 다음과 같다. { id: 1, content:"글1", paths: [...] } 어떻게 쿼리를 작성할 수 있을까? 다음과 같은 테이블이 있다고 가정하자. posts 테이블 ID CONTENT 1 글1 2 글2 3 글3 images 테이블 ID POST_ID(FK) PATH 1 1 /path1 2 2 /path2 3 2 /path3 4 2 /pa..

트러블슈팅

[트러블슈팅] ER_CON_COUNT_ERROR: Too many connections

유저 마이페이지에서 GET요청을 보내던 도중 다음과 같은 에러가 발생했다. 문제는 이 에러가 계속해서 발생하는 것이 아니라, 잘 되다가 한 번씩 발생하는 것이었다. ER_CON_COUNT_ERROR: Too many connections 콘솔창에 출력된 에러 그대로 connection을 너무 많이 만들어준 것이 문제였다. 대체로 트랜잭션 내에서 connection release를 안 해주는 것이 이 에러의 원인이었지만, 나의 경우엔 pool을 생성하는 미들웨어 내에서 에러의 원인이 있었다. module.exports = { database(req, res, next) { const pool = mysql.createPool({...}); res.pool = pool; next(); }, ... } 나는 ..

웹/Node.js

[Node.js] 비동기식 mysql을 사용하는 이유 (async/await)

Node.js에서 비동기(async)방식 mysql을 사용하는 이유를 예제와 함께 살펴보자. 1. 동기식 mysql (mysql) pool+connection을 이용한 트랜잭션 예제 (sync) var mysql = require('mysql'); var pool = mysql.createPool(...); pool.getConnection(function(err, connection) { if (err) throw err; // not connected! connection.beginTransaction(function(err) { if (err) throw err; connection.query('INSERT INTO posts SET title=?', title, function (error, re..

CS/SQL

[MySQL] MySQL에서 CSV파일 Import하기

일반적으로 스프레드시트를 MySQL 테이블로 옮기는 데엔 Workbench 내장 기능인 Table Data Import Wizard나 외부 응용프로그램인 MySQL for Excel이 사용된다. 오늘은 이 중 Table Data Import Wizard를 통한 CSV 파일 Import에 대해서 소개하고자 한다. 1. MySQL Workbench 실행 및 테이블 확인 먼저 데이터를 삽입하고자 하는 테이블을 확인해보자. 데이터를 넣고자 하는 categories 테이블은 category_pk(int)와 category_name(varchar) 2개의 column으로 구성되어있다. 2. Import하고자 하는 시트를 CSV로 변환 MS Excel이나 Google 스프레드시트를 이용해 Import하려는 시트를 C..

웹/FastAPI

[FastAPI] DB(MySQL) 연결하기

FastAPI에 MySQL을 연결하는 방법에 대해 알아보자. 프로젝트 구조는 다음과 같다. 1) 프로젝트 구조 2) secrets.json git에 비밀번호나 중요정보를 노출시키지 않기 위해 secrets.json에 해당 정보들을 모아둘 생각이다. 꼭 .gitignore파일에 secrets.json을 추가시켜야 한다. user: 유저 이름 password: 비밀번호 host: 호스트 주소 port: 포트번호 database: 스키마 이름 2) database.py MySQL에 연결시키기 위해 sqlalchemy와 pymysql모듈을 설치해준다. $pip install sqlalchemy $pip install pymysql DB_URL은 "mysql+pymysql://[유저이름]:[비밀번호]@[호스트주소..

코택
'mysql' 태그의 글 목록