본문 바로가기

Data science/크롤링

MySqldb

import MySQLdb

# MySQL 서버에 접속하고 연결을 변수에 저장한다.
# 사용자 이름과 비밀번호를 저장한 뒤 scraping 데이터베이스를 사용한다.
# 접속에 사용할 문자 코드는 utf8mb4로 지정한다.
conn = MySQLdb.connect(db='scraping', user='scraper', passwd='password', charset='utf8mb4')

# 커서를 추출한다.
C = conn.cursor()

# execute() 메서드로 SQL 구문을 실행한다.
C.execute('DROP TABLE IF EXISTS cities')

#cities 테이블을 생성한다
C.execute('''
    CREATE TABLE cities(
        rank integer,
        citiy text,
        population integer
    )
''')


# execute 메서드의 두 번째 매개변수에는 파라미터를 지정할 수 있다
# SQL 내부에서 파라미터로 변경할 부분은 %s로 지정한다.
C.execute('INSERT INTO cities VALUES(%s, %s, %s)', (1, '상하이', 24150000))

# 파라미터가 딕셔너리일 때는 플레이스홀더를 %(<이름>)s 형태로 지정한다.
C.execute('INSERT INTO cities VALUES (%(rank)s, %(city)s, %(population)s)',
          {'rank' : 2, 'city' : '카라치', 'population' : 2350000})

# executemany 메서드를 사용하면 여러 개의 파라미터를 리스트로 지정해서 실행 가능하다.
C.execute('INSERT INTO cities VALUES(%(rank)s, %(city)s, %(population)s)',
          [
              {'rank' : 3, 'city' : '베이징', 'population' : 12300},
              {'rank' : 4, 'city' : '텐진', 'population' : 12312400},
              {'rank' : 5, 'city' : '대한민국', 'population' : 11242300},
          ])

# 변경사항을 커밋한다.
conn.commit()

# 저장한 데이터를 추출한다.
C.execute('SELECT * FROM cities')

# 쿼리의 결과는 fetchall() 메서드로 추출한다.
for row in C.fetchall():
    print(row)

conn.close()

'Data science > 크롤링' 카테고리의 다른 글

robots  (0) 2024.09.23
절대경로, 상대경로  (0) 2024.09.23
RSS  (0) 2024.09.21
BeautifulSoup  (0) 2024.09.21
lxml  (0) 2024.09.21