python - Web, sql2
python pymysql, sql
>>연결 내용
1. SQL Query
heidi를 사용해 쿼리문 실행
select * from tbl_trade;
select * from tbl_trade limit 10;
select * from tbl_trade limit 0, 10;
select * from tbl_trade limit 10, 10;
select * from tbl_trade limit 20, 10;
: select는 데이터 베이스에 있는 데이터를 선택할 때 사용한다. *모든 것을 선택라하는 의미다. form은 어떤 테이블에서 가져올 건지를 정해주고 limit은 가져올 데이터의 수를 지정한다. limit뒤에 인자가 하나 오면 딱 그 갯수만큼만 가져오고 인자가 2개일 경우 앞 인자부터 시작해 뒷자리 인자 수만큼 가져온다.
select * from tbl_trade order by name asc;
select * from tbl_trade order by name desc;
: order by 은 정렬을 원할때 사용한다. 뒤에 오는 인자는 어떤 열을 중심으로 가져올지를 정하고 asc는 순차, desc는 역순을 의미한다.
: count를 통해 수를 센다. count의 인자는 어떤 항목(열)의 수를 셀건지 정하는데 *은 모든 데이터의 수를 구한다는 것이고 name은 name을 가르키는 열을 센다는 것이다. as는 별칭을 줄때 사용한다.
: 특정 문자가 들어간 데이터를 행을 찾는다. 출력해서 보여주는 정보는 name, code, cur 이고 데이터는 찾아오는 테이블은 tbl_trade 다. where은 찾는 데이터에 조건을 거는데 name 에서 '삼'이 들어간 데이터를 반환하라는 의미다. '%삼%'은 삼 앞 뒤에 다른 문자열이 있는 경우를 모두 포함, '삼%'는 삼 뒤에 다른 문자열이 있는 경우만을 의미한다.
select code, name, cur, high, low from tbl_trade order by code asc limit 0, 10;
: 여러개를 한 번에 섞어 사용이 가능한다. 프로그램을 작성하는 것처럼 여러줄로 작성이 가능하고 아니면 한 줄로 작성도 가능하다.
: code라는 열을 기준으로 데이터를 가져온다. '000020'이라는 값과 같은 code값을 가진 데이터를 출력해준다.
select * from tbl_trade order by name desc limit 0, 10;
: tbl_trade에서 모든 데이터를 이름의 역순을 기준으로 0부터 10개를 선택한다.
select count(*) as cnt from tbl_trade;
select count(name) as cnt from tbl_trade;
select name, code, cur from tbl_trade where name like '%삼%' ;
select name, code, cur from tbl_trade where name like '삼%' ;
select
code, name, cur, high, low
from
tbl_trade
where
name like '%삼%';
: 여러개를 한 번에 섞어 사용이 가능한다. 프로그램을 작성하는 것처럼 여러줄로 작성이 가능하고 아니면 한 줄로 작성도 가능하다.
select
code, name, cur, high, low
from
tbl_trade
where
code like '000020';
select * from tbl_trade where code='000020';
2. db에서 쿼리문 사용해 데이터 가져오기
connection = sql.connect(host='localhost',
user='root',
password='00000000',
db='python_db',
charset='utf8')
cursor = connection.cursor()
sql = "select * from users where uid='n' and upw='1';"
cursor.execute(sql)
row=cursor.fetchone()
cursor: sql에서 select한 데이터들을 행 단위로 접근할 수 있게 해준다.
cursor = connection.cursor()
:cursor()은 실행할 퀴리에 있어 새로운 cursor를 만들어 준다.
sql = "select * from users where uid='n' and upw='1';"
: 쿼리문을 준비한다. select는 데이터베이스에서 특정 데이터를 골라 선택하라는 명령어다. from은 데이터를 가져올 테이블의 위치를 정하고, where은 원하는 데이터 조건을 지정할 때 사용한다. 현재는 users라는 테이블에서 uid가 n이고, upw가 1인 데이터를 가져오는 퀴리문이다.
cursor.execute(sql)
: execute()는 cursor를 실행시켜주는 함수다. 아까 만들어 뒀던 cursor에 execute 인자를 뭐리문으로 넘겨 데이터 베이스에서 쿼리문을 실행시킨다. 이 를 실행시키고 나면 cursor에는 원하는 데이터가 행렬로 정리돼있다.
row=cursor.fetchone()
: cursor에 모인 데이터들을 fetchone()을 통해 꺼낸다. fetchone()은 다음 행을 붙여주는 함수로 현재는 row에는 cursor에 모인 데이터 중에서 가장 앞에 있던 행이 들어간다.
DataBase
tbl_trade:
users table:
전체코드
import pymysql as sql
connection = sql.connect(host='localhost',
user='root',
password='yj008008',
db='python_db',
charset='utf8')
print('DB오픈')
cursor = connection.cursor()
sql = "select * from users where uid='n' and upw='1';"
row=cursor.fetchone()
print(row)
cursor.close()
connection.close()
print("DB닫기")
댓글
댓글 쓰기