[SQL] 13강 python with

JONGYOON JEON·2024년 2월 8일
0

SQL

목록 보기
6/13

sql 연결 패키지

pip install mysql-connector-python

mysql 연결

import mysql.connector

local= mysql.connector.connect(
    host = "localhost",
    user = "root",
    password = "**/*/***",
    database = "zerobase"
)

local.close()

aws 연결

import mysql.connector

aws = mysql.connector.connect(
    host = "database-1.cfs2cmwe6vbi.ap-southeast-2.rds.amazonaws.com",
    port = 3306,
    user = "admin",
    password = "////****"
    
aws.close()

닫는걸 잘해줘야 한다.

닫는걸 잘 못했을 때, 세션 끊어 버리기

mysql 접속

show processlist

kill 세션id

오류 sql 쿼리를 날려도 저장이 안된다.

아래 remote. commit() 을 써야 한다.
그래야 실행된 쿼리가 db에 저장이 된다.
여러개의 쿼리는 처리하지 못하고 error가 난다.

cur = remote.cursor()
sql = open("test02.sql").read()
cur.execute(sql)

remote.commit()

remote.close()

https://gradient-descent.tistory.com/47
참고 링크

fetchall

코드를import mysql.connector

remote = mysql.connector.connect(
    host = "database-1.cfs2cmwe6vbi.ap-southeast-2.rds.amazonaws.com",
    port = 3306,
    user = "admin",
    password = "*****//",
    database = "zerobase"

)


cur = remote.cursor(buffered=True)
cur.execute("SELECT * FROM celeb")
result = cur.fetchall()
for result_row in result:
    print(result_row)
remote.close()

fetchall() 함수는 SQL 쿼리를 통해 얻은 결과를 모두 가져오는 함수입니다. Python의 DB-API에서 일반적으로 사용되며, 대부분의 Python DB 연결 라이브러리(예: sqlite3, psycopg2, PyMySQL 등)에서 지원합니다.

fetchall() 함수의 사용 과정은 다음과 같습니다:

데이터베이스 연결: 먼저 데이터베이스에 연결해야 합니다. 이때, 데이터베이스의 종류, 호스트, 포트, 사용자 이름, 비밀번호 등의 정보가 필요합니다.

import sqlite3
conn = sqlite3.connect('example.db')

커서 생성: 연결한 데이터베이스에 대해 SQL 쿼리를 실행하려면 커서(cursor) 객체를 생성해야 합니다. 커서는 SQL 쿼리를 관리하고 결과를 가져오는 역할을 합니다.

cursor = conn.cursor()

SQL 쿼리 실행: execute() 메서드를 사용하여 SQL 쿼리를 실행합니다. 이때, SQL 쿼리는 문자열 형태로 전달됩니다.

cursor.execute("SELECT * FROM table_name")

결과 가져오기: 이제 fetchall() 함수를 사용하여 쿼리의 결과를 모두 가져올 수 있습니다. fetchall() 함수는 쿼리 결과의 모든 행을 리스트로 반환합니다. 각 행은 튜플 형태로, 튜플의 각 요소는 행의 각 열에 해당합니다.

rows = cursor.fetchall()
for row in rows:
    print(row)

tuple ?

튜플(tuple)은 파이썬의 기본적인 데이터 타입 중 하나로, 여러 개의 요소를 하나의 집합으로 묶는데 사용됩니다. 튜플은 다음과 같은 특징을 가지고 있습니다.

불변(Immutable): 한 번 생성된 튜플의 요소는 변경할 수 없습니다. 즉, 튜플의 요소를 추가하거나 삭제하거나 수정하는 것이 불가능합니다.
순서 보장: 튜플의 요소는 순서를 가지고 있습니다. 따라서 인덱스를 통해 튜플의 요소에 접근할 수 있습니다.
다양한 타입의 요소를 가질 수 있음: 튜플의 요소로는 어떤 타입의 값이든지 사용할 수 있습니다. 숫자, 문자열, 리스트, 딕셔너리 등 어떤 타입의 값이든 튜플의 요소로 포함시킬 수 있습니다.

iterrow() ?

iterrows()는 판다스(Pandas) 라이브러리의 DataFrame 객체에서 사용할 수 있는 메서드로, DataFrame의 각 행을 순회하며 인덱스와 해당 행의 데이터를 반환하게 됩니다.

iterrows()는 인덱스와 해당 행의 데이터를 포함하는 튜플을 반환하는 반복자를 제공합니다. 이를 통해 DataFrame의 각 행에 대해 반복 작업을 수행할 수 있습니다.

위 코드를 실행하면 DataFrame의 각 행에 대해 인덱스와 행 데이터를 출력합니다.

iterrows()를 사용할 때 주의해야 할 점은, 이 메서드가 각 행을 Series로 반환한다는 점입니다. 따라서 행 데이터에 대한 조작은 원본 DataFrame에 영향을 주지 않습니다. 원본 DataFrame을 변경하려면 직접 인덱싱을 사용하여 접근해야 합니다.

또한, iterrows()는 DataFrame의 크기가 클 경우 느릴 수 있습니다. 가능하다면 벡터화된 연산을 사용하는 것이 효율적일 수 있습니다. 예를 들어, DataFrame의 모든 값을 더하려면 각 행을 순회하며 값을 더하는 대신 df.sum()을 사용하는 것이 더 효율적입니다.

profile
효율적인 걸 좋아해요

0개의 댓글