210807

nooyji·2021년 8월 7일
0
import datetime

now = datetime.datetime.now()
nowDatetime = now.strftime('%Y-%m-%d %H:%M:%S')
# 한 줄로
# nowDatetime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')

auto commit 옵션 넣기

conn = sqlite3.connect('C:/~/database.db', isolation_level = None)

Cursor (커서 바인딩, 커서 연결)

c = conn.cursor()

테이블 생성 (Data Type : TEXT, NUMERIC, INTEGER, REAL, BLOB (파일데이터 저장))

c.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, username text, email text, phone text, website text, regdate text)")

데이터 삽입

c.execute("INSERT INTO users VALUES (1, 'Kim', 'Kim@naver.com', '010-0000-0000', 'Kim.com', ?)", (nowDatetime,)) # ? 튜플 형태로

c.execute("INSERT INTO users (id, username, email, phone, website, regdate) VALUES (?, ?, ?, ?, ?, ?)", (2, 'Park', 'Park@daum.net', '010-1111-1111', 'Park.com', nowDatetime))

Many 삽입 (튜플, 리스트) (☆☆☆☆☆)

userList = (\
			(3, 'Lee', '...', ~),\
            (4, ~),\
            (5, ~)\
            )
c.executemany("INSERT INTO users (id, username, email, phone, website, regdate) VALUES (?, ?, ?, ?, ?, ?)", userList)

테이블 데이터 삭제

conn.execute("DELETE FROM users") # 데이터 전부 삭제
print("users db deleted : ", conn.execute("DELETE FROM users").rowcount) # -> users db deleted : 5, 지운 row 갯수 출력

커밋 commit : isolation_level = None 일 경우 자동 반영 (오토 커밋)

conn.commit()

롤백

conn.rollback()

접속 해제

conn.close()

데이터 조회 (전체)

c.execute("SELECT * FROM users")

# 커서 위치가 변경

# 1개 로우 선택
print('One -> \n', c.fetchone())

# 지정 로우 선택
print("Three -> \n", c.fetchmany(size = 3))

# 전체 로우 선택
print('ALL -> \n', c.fetchall())

데이터 조회 & 출력

rows = c.fetchall()
for row in rows:
	print('retrieve 1 > ', row)

(많이 사용)

for row in c.fetchall():
	print('retrieve 2 > ', row)
for row in c.execute('SELECT * FROM users ORDER BY id desc'):
	print('retrieve 3 > ', row)

WHERE 절

param1 = (3,)
c.execute('SELECT * FROM users WHERE id = ?', param1)
print(c.fetchone())
print(c.fetchall()) # [], 커서가 이동해서 데이터 없음
param2 = 4
c.execute('SELECT * FROM users WHERE id = "%s"' %param2)
print(c.fetchone())
c.execute('SELECT * FROM users WHERE id = :id', {"Id" : 5})
print(c.fetchone())
param4 = (3, 5)
c.execute("SELECT * FROM users WHERE id IN (?, ?)", param4)
# IN 합집합
print(c.fetchall())
c.execute("SELECT * FROM users WHERE id IN ('%d', '%d')" % (3, 4))
# IN 합집합
print(c.fetchall())
c.execute("SELECT * FROM users WHERE id = :id1 OR id = :id2", {"id1" : 2, "id2" : 5})
# OR 합집합
print(c.fetchall())

Dump 출력 (데이터베이스 백업, 덤프 뜬다(=테이블 생성 SQL문 생성)

with conn:
	with open('C:/python_basic/src/dump.sql', 'w') as f:
    	for line in conn.iterdump():
        	f.write('%s\n'%line)
# with 절이기 때문에 f.close(), conn.close() 호출이 된 것

데이터 수정

c.execute("UPDATE users SET username = ? WHERE id = ?", ('niceman', 2))
conn.commit()
c.execute("UPDATE users SET username = :name WHERE id = :id", {"name" : 'goodman', "id" : 5})
c.execute("UPDATE users SET username = '%s' WHERE id = '%s'" % ('badboy', 3))

데이터 삭제

c.execute("DELETE FROM users WHERE id = ?", (2,))
c.execute("DELETE FROM users WHERE id = :id", {"id" : 5})
c.execute("DELETE FROM users WHERE id = '%s'" %(4))

import random

while n <= 5:
	random.shuffle(words)
    q = random.choice(words)

소수점 3자리까지 표현

et = format(et, ".3f")

기본키 자동 증가 생성 테이블 생성

cursor.execute("CREATE TABLE IF NOT EXISTS records (id INTEGER PRIMARY KEY AUTO INCREMENT, cor_cnt INTEGER, record text, regdate text)")

소리 재생

import winsound
winsound.PlaySound('./sound/good.wav', winsound.SND_FILENAME)

0개의 댓글