일대다 페이징 방법
실전! Querydsl
삭제된 글입니다
- java
- jpa
173만명의 커뮤니티!! 함께 토론해봐요.
실전! Querydsl
삭제된 글입니다
데이터 분석 SQL Fundamentals
안녕하세요 '실습용 스키마 설치 이슈 시 적용하세요'라는 강의편에 맥북에서 create schema nw; 이렇게 DBeaver에서 실행을 하면 아래와 같은 에라가 뜨네요 ㅠ SQL Error [42501]: ERROR: permission denied for database postgres
다양한 사례로 익히는 SQL 데이터 분석
query = """ select * from nw.customers """ df = pd.read_sql_query(sql=query, con=postgres_engine) df.head(10) --------------------------------------------------------------------------- UnicodeDecodeError Traceback (most recent call last) Cell In[25], line 4 1 query = """ 2 select * from nw.customers 3 """ ----> 4 df = pd.read_sql_query(sql=query, con=postgres_engine) 5 df.head(10) File ~\anaconda3\Lib\site-packages\pandas\io\sql.py:468, in read_sql_query(sql, con, index_col, coerce_float, params, parse_dates, chunksize, dtype, dtype_backend) 465 if dtype_backend is lib.no_default: 466 dtype_backend = "numpy" # type: ignore[assignment] --> 468 with pandasSQL_builder(con) as pandas_sql: 469 return pandas_sql.read_query( 470 sql, 471 index_col=index_col, (...) 477 dtype_backend=dtype_backend, 478 ) File ~\anaconda3\Lib\site-packages\pandas\io\sql.py:832, in pandasSQL_builder(con, schema, need_transaction) 829 raise ImportError("Using URI string without sqlalchemy installed.") 831 if sqlalchemy is not None and isinstance(con, (str, sqlalchemy.engine.Connectable)): --> 832 return SQLDatabase(con, schema, need_transaction) 834 warnings.warn( 835 "pandas only supports SQLAlchemy connectable (engine/connection) or " 836 "database string URI or sqlite3 DBAPI2 connection. Other DBAPI2 " (...) 839 stacklevel=find_stack_level(), 840 ) 841 return SQLiteDatabase(con) File ~\anaconda3\Lib\site-packages\pandas\io\sql.py:1539, in SQLDatabase.__init__(self, con, schema, need_transaction) 1537 self.exit_stack.callback(con.dispose) 1538 if isinstance(con, Engine): -> 1539 con = self.exit_stack.enter_context(con.connect()) 1540 if need_transaction and not con.in_transaction(): 1541 self.exit_stack.enter_context(con.begin()) File ~\anaconda3\Lib\site-packages\sqlalchemy\engine\base.py:3245, in Engine.connect(self) 3222 def connect(self) -> Connection: 3223 """Return a new :class:`_engine.Connection` object. 3224 3225 The :class:`_engine.Connection` acts as a Python context manager, so (...) 3242 3243 """ -> 3245 return self._connection_cls(self) File ~\anaconda3\Lib\site-packages\sqlalchemy\engine\base.py:145, in Connection.__init__(self, engine, connection, _has_events, _allow_revalidate, _allow_autobegin) 143 if connection is None: 144 try: --> 145 self._dbapi_connection = engine.raw_connection() 146 except dialect.loaded_dbapi.Error as err: 147 Connection._handle_dbapi_exception_noconnection( 148 err, dialect, engine 149 ) File ~\anaconda3\Lib\site-packages\sqlalchemy\engine\base.py:3269, in Engine.raw_connection(self) 3247 def raw_connection(self) -> PoolProxiedConnection: 3248 """Return a "raw" DBAPI connection from the connection pool. 3249 3250 The returned object is a proxied version of the DBAPI (...) 3267 3268 """ -> 3269 return self.pool.connect() File ~\anaconda3\Lib\site-packages\sqlalchemy\pool\base.py:452, in Pool.connect(self) 444 def connect(self) -> PoolProxiedConnection: 445 """Return a DBAPI connection from the pool. 446 447 The connection is instrumented such that when its (...) 450 451 """ --> 452 return _ConnectionFairy._checkout(self) File ~\anaconda3\Lib\site-packages\sqlalchemy\pool\base.py:1255, in _ConnectionFairy._checkout(cls, pool, threadconns, fairy) 1247 @classmethod 1248 def _checkout( 1249 cls, (...) 1252 fairy: Optional[_ConnectionFairy] = None, 1253 ) -> _ConnectionFairy: 1254 if not fairy: -> 1255 fairy = _ConnectionRecord.checkout(pool) 1257 if threadconns is not None: 1258 threadconns.current = weakref.ref(fairy) File ~\anaconda3\Lib\site-packages\sqlalchemy\pool\base.py:716, in _ConnectionRecord.checkout(cls, pool) 714 rec = cast(_ConnectionRecord, pool._do_get()) 715 else: --> 716 rec = pool._do_get() 718 try: 719 dbapi_connection = rec.get_connection() File ~\anaconda3\Lib\site-packages\sqlalchemy\pool\impl.py:168, in QueuePool._do_get(self) 166 return self._create_connection() 167 except: --> 168 with util.safe_reraise(): 169 self._dec_overflow() 170 raise File ~\anaconda3\Lib\site-packages\sqlalchemy\util\langhelpers.py:147, in safe_reraise.__exit__(self, type_, value, traceback) 145 assert exc_value is not None 146 self._exc_info = None # remove potential circular references --> 147 raise exc_value.with_traceback(exc_tb) 148 else: 149 self._exc_info = None # remove potential circular references File ~\anaconda3\Lib\site-packages\sqlalchemy\pool\impl.py:166, in QueuePool._do_get(self) 164 if self._inc_overflow(): 165 try: --> 166 return self._create_connection() 167 except: 168 with util.safe_reraise(): File ~\anaconda3\Lib\site-packages\sqlalchemy\pool\base.py:393, in Pool._create_connection(self) 390 def _create_connection(self) -> ConnectionPoolEntry: 391 """Called by subclasses to create a new ConnectionRecord.""" --> 393 return _ConnectionRecord(self) File ~\anaconda3\Lib\site-packages\sqlalchemy\pool\base.py:678, in _ConnectionRecord.__init__(self, pool, connect) 676 self.__pool = pool 677 if connect: --> 678 self.__connect() 679 self.finalize_callback = deque() File ~\anaconda3\Lib\site-packages\sqlalchemy\pool\base.py:902, in _ConnectionRecord.__connect(self) 900 self.fresh = True 901 except BaseException as e: --> 902 with util.safe_reraise(): 903 pool.logger.debug("Error on connect(): %s", e) 904 else: 905 # in SQLAlchemy 1.4 the first_connect event is not used by 906 # the engine, so this will usually not be set File ~\anaconda3\Lib\site-packages\sqlalchemy\util\langhelpers.py:147, in safe_reraise.__exit__(self, type_, value, traceback) 145 assert exc_value is not None 146 self._exc_info = None # remove potential circular references --> 147 raise exc_value.with_traceback(exc_tb) 148 else: 149 self._exc_info = None # remove potential circular references File ~\anaconda3\Lib\site-packages\sqlalchemy\pool\base.py:898, in _ConnectionRecord.__connect(self) 896 try: 897 self.starttime = time.time() --> 898 self.dbapi_connection = connection = pool._invoke_creator(self) 899 pool.logger.debug("Created new connection %r", connection) 900 self.fresh = True File ~\anaconda3\Lib\site-packages\sqlalchemy\engine\create.py:640, in create_engine.<locals>.connect(connection_record) 638 if connection is not None: 639 return connection --> 640 return dialect.connect(*cargs, **cparams) File ~\anaconda3\Lib\site-packages\sqlalchemy\engine\default.py:580, in DefaultDialect.connect(self, *cargs, **cparams) 578 def connect(self, *cargs, **cparams): 579 # inherits the docstring from interfaces.Dialect.connect --> 580 return self.loaded_dbapi.connect(*cargs, **cparams) File ~\anaconda3\Lib\site-packages\psycopg2\__init__.py:122, in connect(dsn, connection_factory, cursor_factory, **kwargs) 119 kwasync['async_'] = kwargs.pop('async_') 121 dsn = _ext.make_dsn(dsn, **kwargs) --> 122 conn = _connect(dsn, connection_factory=connection_factory, **kwasync) 123 if cursor_factory is not None: 124 conn.cursor_factory = cursor_factory UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb8 in position 63: invalid start byte 판다스 버전과 sqlalchemy 버전은 다음과 같이 맞추었습니다 2.0.3 2.0.0
Oracle PL/SQL 딱 이만큼.. [개념+실전]
안녕하세요! 수업 정말 잘듣고 있습니다!! 공부한거를 블로그에 작성 하려하는데 예제 같은 것을 출처를 밝혀 포스팅 해도될까요??
독하게 시작하는 C 프로그래밍
독하게 시작하는 c프로그래밍을 수강하고 있는 도중 필수 실습 문제들을 풀며 이렇게 공부하는 방식이 맞는 것일지 의문이 생겨 질문하게 되었습니다. 필수 실습 문제들을 풀 때 많이 고민하고 아무리 시간이 오래 걸려도 최대한 혼자서 풀려고 노력하는 편입니다. 하지만 잘 풀리지 않을 때는 강의에서는 간단하게 10줄 20줄에 끝나는 코드가 굉장히 복잡해지고 가독성이 굉장히 떨어지게 됩니다. 하지만 원하는 결과는 도출해냅니다. 이런 방식의 공부법이 올바른 것인지 궁금합니다.
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
삭제된 글입니다
CUDA 프로그래밍 (3) - C/C++/GPU 병렬 컴퓨팅 - 메모리 구조
adjdiff-shared.cu 파일이 없는 것 같읍니다. 확인 부탁드립니다.
Windows 시스템 프로그래밍 - 기본
안녕하세요? 이번에 선생님의 시스템 프로그래밍 강의를 1회독 한 개발자 지망생입니다. 현재 나이는 33살이며 개발지식이 전무하였고, 웹개발을 공부한지는 1년 정도 되었습니다. 현재는 자바 스프링과 node.js와 next.js로 간단한 게시판 만들기 및 기본적인 배포 정도만 할 수 있습니다. 영어실력은 아직 중학교 수준이지만 그래도 틈틈히 하고 있습니다 컴퓨터 및 이과적 지식들이 매우 흥미로워서 늦은 나이에 학구열적으로 성격 및 취미까지 변하였습니다. '기술 공부'과 '일의 보람' 에 관심이 많아서 보안 업계에 관심이 있었는데, 시작을 웹개발이 아닌 아예 바로 보안 쪽으로 하면 어떨까 해서 이것저것 알아보았습니다. 보안컨설팅 쪽은 정말 기술적 성장과는 거리가 멀어보였고... 보안관제와 침해대응 쪽은 경력이 쌓이며 PM(관리영역)으로 가도록 루트가 정해진 것 같았고, 요즘은 클라우드 기반의 데브섹옵스 쪽도 비젼이 밝아서 많이 간다고 하던데, 하지만 이쪽도 PM으로 빠지는 것 같던데, 클라우드 데브섹옵스가 매우 신생직종이라, 저도 정확히는 잘 모르겠습니다. 그래서 기술 공부를 놓치지 않을 수 있는 곳이 모의해킹과 보안 소프트웨어 개발 2가지인 듯 하였습니다. 그 중에서 보안 소프트웨어 개발 쪽이 연차가 쌓여도 개발자의 기술적 성장을 놓치지 않고, 계속 기술 공부를 할 수 있으며 범죄를 예방/조치 한다는 일의 보람도 잡을 수 있다고 생각하게 되었습니다. 그래서 널널한 개발자님의 영상 중에 이스트소프트 제품을 보며 포트폴리오를 추천해주시는 영상 ( https://www.youtube.com/watch?v=PI_Acog-aEo&t=1068s )을 보고 공부를 더 진득히 하여 바로 해당 제품 포트폴리오를 준비해볼까 생각하는 와중에, 아래와 같은 궁금증을 갖게 되어서 교수님의 혜안을 빌리고자 글을 쓰게 되었습니다. 질문1. 혹시 자바/스프링을 사용하는 si 업계에서 개발자 경험을 먼저 해보는게 나을까요? 질문2. 보안이 아닌 다른(보안제품보다 난이도가 낮은) c/c++ 제품 포트폴리오를 준비하여서 보안 외 c/c++ 개발 경험을 먼저 해보는게 나을까요? 질문3. 개발자 현직 경험이 전무한 상태로, 바로 보안 제품 포트폴리오를 만들기 위한 공부를 시작하는게 나을까요? 질문4. 다른 보안직군 대비 취직 난이도가 괜찮다고 하는 보안관제를 먼저 들어가보는게 나을까요? 질문5. 보안 소프트웨어 개발자가 보안직군 중 유일하게, 연차가 쌓여도 기술지식 공부에 손을 놓치지 않을 수 있는 직군이 아닐까? 하는 제 생각이 맞는건가요?
독하게 시작하는 C 프로그래밍
static변수가 전역변수랑 기능상 동일한거 같은데요,,,구분되서 사용되는 이유가 무언가요?
[백문이불여일타] 데이터 분석을 위한 중급 SQL 문제풀이
SAS만 다뤘었고 SQL + Python이 대세인 가 싶었는데 어느 순간 대시보드 구축능력도 요구하네요 ㅋㅋㅋㅋ tableau 강의가 있으실지요.. 뭐부터 손을 대야 할지 .. 고민입니다.
독하게 시작하는 C 프로그래밍
안녕하세요 어제부터 수업을 멈추고 달팽이 배열을 풀기 위해 반나절 정도 생각하면서 논리를 텍스트로도 적어보고, 그림으로도 그려봤는데도 결국 답이 나오지 않아 답을 보았습니다. 강사님께서 작성해주신 달팽이 배열 코드를 보면서 제 머릿속에서는 이렇게 접근? 한다는 생각조차 없었던 것 같습니다.. 이제 답을 보면서 이해가 되긴 하지만 막상 다시 풀어보려니까 또 눈 앞이 캄캄해지더군요 ㅜ.ㅜ 재능이 없는건지 아니면 연습량이 부족한건지... ㅜ.ㅜ 자주 문제도 접하다보면 논리사고력도 많이 키워질까요?? 그리고 잘 이해가 되지 않는 실습 문제들은 일단 지나가고 다음 2회독때 다시 한번 보는게 좋을지 아니면 시간이 걸리더라도 지금 머리속에 집어넣고 진도를 나가야하는지 팁이 있으실까요?
홍정모의 따라하며 배우는 C언어
제목 그대로 좀 깔짝 거리긴해서 if 라던가 swtich나 이런 아주 기초적인 내용은 아는 상태입니다. 근데 스킵하자니 또 완벽하게 아는것도 아닌것같고 또 이와 같이 함수 하나에 대한 수업 시간도 10분 정도되는거 보면 아 이게 여기 안에 뭔가 있어서 이렇게 설명하시려는건가? 라고 싶어서 막상 들으면 8정도는 쉬운부분이라 알고 있고 나머지 2가 생소한 내용이라 처음들어서 오 좋다 이런 상태입니다. 문제는 제가 포인터나 구조체 이런 C 언어에서 누구나 어려워 할 것만한것들을 까먹은게 문제인데요. 그래서 그러한 어려운 부분들로 수업을 스킵하고 싶은데 혹시 조교님들이나 저와 같은 상태로 수업을 들어보신 분들, 이러한 실행방법을 추천하시나요? 감사합니다!
데이터 분석 SQL Fundamentals
이왕이면 강사님께서 올리신 강좌를 구매해 이어서 학습을 해보려 합니다. 로드맵이 있다면, 보고 구매를 하려고 했는데 올려져 있는 강의 수는 많은데 머신러닝 관련 로드맵이 없더라고요 파이썬 머신러닝 완벽 가이드, 딥러닝 컴퓨터 비전 완벽 가이드 딥러닝 CNN 완벽 가이드 캐글 advanced 머신러닝 실전 박치기 이 강의들을 기본부터 학습하려 하는데요 오래된 강좌가 개정되어 다른 이름으로 만들어져 있어서 내용이 겹치는게 있는지 아니면 모두 수강하는게 맞는지 어떤 순서로 학습하면 되는지 알고 싶습니다.
[백문이불여일타] 데이터 분석을 위한 중급 SQL 문제풀이
안녕하세요. 강의를 보면서 열심히 공부하고있습니다. 다름이 아니라 이번에 SQLD 자격증 시험을 신청했습니다. 해당 강의 로드맵을 다 듣고 노랭이 책을 풀려고하는데, 해당 강의 로드맵을 전체적으로 들으면 될까요?
나도코딩의 자바 기본편 - 풀코스 (20시간)
삭제된 글입니다
데이터 분석 SQL Fundamentals
강사님 안녕하세요, 조인실습2에서 부서명 SALES와 RESEARCH 소속 직원별로 과거부터 현재까지 모든 급여를 취합한 평균 급여 예시가 조금 헷갈립니다. With 문이 서브쿼리 역할을 하는걸로 이해하고 있는데 해당 예시에서 왜 with문이 왜 필요한지, with문 또는 서브쿼리 사용하지 않고 쿼리를 진행시키는 방법이 있는지 궁금합니다ㅠ
다양한 사례로 익히는 SQL 데이터 분석
선생님.. 나래비는 일본어 입니다. 어감이 예뻐서 옛 우리말인줄 알고 찾아봤는데 '줄을 세우다'라는 일본어 '나라비'가 어원이라고 하네요
실전! Querydsl
QueryDSL 내부 메소드 중 fetchResult() 나 fetchCount()는 만료된 메소드에 대해서는 QueryDSL에서 Blaze-persistence Integration 라이브러리 사용을 권장 하는데요, Blaze-persistence도 QueryDSL 처럼 쿼리 빌더 API 로서 개발자에게 유지보수하기 좋은 객체를 제공해주고 있습니다. 게다가 최신 업데이트 날짜가 글 작성일 기준(2023.06.21) 일주일 이전이라 여전히 유지보수되고 있어서 최신 스프링버전과 호환성도 어느정도 보장되었다고 볼 수 있습니다. 개인적으로 SpringBoot 3.1.0 기준으로 다음과 같이 세팅하니 정상적으로 동작하는 걸 확인했는데요, 혹시 저처럼 deprecated 메소드를 쓰는 것이 신경쓰이시는 분들을 위해 공유드립니다. build.gradle dependencies { //Blaze-Persistence implementation 'com.blazebit:blaze-persistence-integration-querydsl-expressions-jakarta:1.6.9' implementation 'com.blazebit:blaze-persistence-integration-hibernate-6.2:1.6.9' implementation 'com.blazebit:blaze-persistence-core-impl-jakarta:1.6.9' } BlazePersistenceConfiguration.java @Configuration public class BlazePersistenceConfiguration { @PersistenceUnit private EntityManagerFactory entityManagerFactory; @Bean @Scope(ConfigurableBeanFactory.SCOPE_SINGLETON) @Lazy(false) public CriteriaBuilderFactory createCriteriaBuilderFactory() { CriteriaBuilderConfiguration config = Criteria.getDefault(); // do some configuration return config.createCriteriaBuilderFactory(entityManagerFactory); } } QuerydslBasicTest.java ..... JPAQueryFactory queryFactory; @Autowired CriteriaBuilderFactory cbf; BlazeJPAQueryFactory blazeQueryFactory; @BeforeEach public void testEntity(){ queryFactory = new JPAQueryFactory(em); // 이건 동시성 문제를 고민하지 않아도 됨, 해결됨 blazeQueryFactory = new BlazeJPAQueryFactory(em, cbf); ..... 적용 결과 기존 QueryDSL 세팅한 것에 추가로 세팅하시면, 만료된 메소드에 대해 Blaze-persistence 객체로 대체되는데요, 기존 querydsl 클래스를 상속 받는 형태여서 QueryDSL이 제공하는 메소드를 그대로 쓸 수도 있습니다. fetchResults는 fetchPage로 바꿔서 사용할 것을 권장하고 있다는 점 참고하시면 될 것 같습니다. 추가로 내부로직이라든지 설명이 더 필요하시다면 Blaze-persistence 릴리즈 노트 와 Blaze Persistence Document 를 참고하시면 좋을 것 같습니다. 이 글에 대해 지적 및 피드백 해주시면 정말 감사하겠습니다. 감사합니다. 여담 및 고민 : 개인적으로 이 라이브러리의 내부로직을 뜯어보면서 분석하고 검증할 수 있는 역량은 부족한지라 분석 및 검증하는 방법에 대해서 팁이라든지, 아니면 blaze-persistence 사용할 시 주의해야할 점이라든지 조언해주실 수 있으시면 정말 감사드립니다. 강의를 듣던 중에 서브쿼리가 발생하는 부분에서는 정상동작하지 않는 것을 발견했습니다. @Test public void findUserDto(){ QMember memberSub = new QMember("memberSub"); List<UserDto> memberDtoList = queryFactory //이건 blazeQueryFactory가 정상 동작하지 않음 .select(Projections.fields(UserDto.class, //생성자 필드 순서에 맞게 변수를 만들어야 한다. member.username.as("name"), // member.age 대신 서브쿼리로 다 최대 나이로 찍고 싶어 ExpressionUtils.as( JPAExpressions .select(memberSub.age.max()) .from(memberSub), "age") )) .from(member) .fetch(); for (UserDto userDto : memberDtoList) { System.out.println("userDto = " + userDto); } } QueryDSL 쿼리 /* select member1.username as name, (select max(memberSub.age) from Member memberSub) as age from Member member1 */ select m1_0.username, (select max(m2_0.age) from member m2_0) from member m1_0 blaze-persistence 쿼리 /* SELECT member1.username AS name, member1.age AS generatedSubquery_1 FROM Member member1 */ select m1_0.username, m1_0.age from member m1_0 blaze-persistence generatedSubquery라 하여, 서브쿼리를 하나의 alias로 처리를 해버렸는데, 후행으로 이 generatedSubquery 에 대한 정의가 따라오질 않습니다... 왜 이런 차이가 나오는지는 모르겠지만 blaze-persistence 활용할 때는 유의해야할 것 같습니다.
CUDA 프로그래밍 (1) - C/C++/GPU 병렬 컴퓨팅 - CUDA 커널 kernel
cuda 0번 강의를 보고 마음에 와닿아서 6개의 강의를 동시에 구매했어요! 제가 요즘 비전 프로그램을 개발 중인데 opencl을 이용하여 범용성 있게 프로그램을 구성하고 싶은데요. 혹시 opencl 강의도 찍어주시면 안될까요? 혹은 좋은 강의나 책이 시중에 이미 있다면 추천좀 부탁드려도 될까요? 구글에 너무 자료가 없어요... SYCL 같은 경우는 MSVC와 호환도 안되구요..
오라클 성능 분석과 인스턴스 튜닝 핵심 가이드
안녕하세요 선생님. 문의드리고 싶은 내용이 있는데 글을 올릴 곳이 마땅치 않아 여기에 문의드립니다. 저는 현재 DBA 로 근무 중인데 SQL 작성 능력을 키우고 싶은데 혹시 선생님의 '데이터 분석 SQL Fundamentals' 강의가 DBA 업무 쿼리 작성에 도움이 될 수 있는 강의일까요? 일을 해보니 join, grouping 이 쉬운것 같으면서도 다양한 쿼리 작성 시에 자유자재로 안써지는 편이라 아직 공부가 덜 된것 같아서요. 일/주/월 사이즈 구하는 쿼리나 기타 여러 조건이 결합된 오브젝트 조회 쿼리를 주로 작성할 필요가 있고, 앞으로 튜닝 업무를 위한 튜닝 공부를 할 때도 기본 이상의 SQL 작성 능력이 필요하다고 판단되서 문의드립니다. 그리고 선생님의 ORACLE 아키텍쳐 강의는 출퇴근 간에 잘 듣고 있는데 혹시 SQL 튜닝 강의는 하실 예정이 있으실까요? 감사합니다.