> 백엔드 개발 > 파이썬 튜토리얼 > Python 데이터베이스 mysql 작업에 대한 자세한 설명

Python 데이터베이스 mysql 작업에 대한 자세한 설명

高洛峰
풀어 주다: 2017-03-08 09:55:57
원래의
1296명이 탐색했습니다.

서문: 최근 Django를 배우기 시작했는데, 웹 프레임워크를 배우고 나니 갑자기 많은 지식을 배운 기분이 들었습니다. happy~~ 이 블로그는 데이터베이스의 기본적인 동작을 정리하고 적어놓은 블로그인데 내용이 꽤 적습니다. 내일 SQLAlchemy를 작성하겠습니다.

1. 기본 데이터베이스 작업

1. 데이터베이스에서 중국어 쓰기를 허용하려면 다음 명령을 사용하면 됩니다. 데이터베이스

create database zcl charset utf8;
로그인 후 복사


2. 학생 테이블 구조 보기

desc students;
로그인 후 복사


3. 학생 테이블 구조의 생성문 보기

show create table students;
로그인 후 복사


4. 데이터베이스 삭제

drop database zcl;
로그인 후 복사


5. 새 필드 만들기

alter table students add column nal char(64); 
로그인 후 복사


PS: 위의 "간단한 설명은 정말 싫습니다 + 코드' 블로그입니다. 사실 그 당시 mysql 터미널에서 예제를 많이 작성했는데, 당시 컴퓨터에서 동영상 시청 소프트웨어가 실행되고 있었기 때문에 Ctrl+C/V를 할 수 없었습니다. 이제 너무 게으르다 ㅎㅎ~~

2. Python을 데이터베이스에 연결하세요.

python3은 더 이상 지원하지 않습니다. mysqldb. 대체 모듈은 PyMySQL입니다. 이 글의 예시는 python3.4 환경을 기준으로 합니다.

1. pymysql 모듈 설치


pip3 install pymysql
로그인 후 복사


2 . 데이터베이스에 연결하고 데이터 인스턴스를 삽입하세요.


import pymysql
#生成实例,连接数据库zcl
conn = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='zcl')
#生成游标,当前实例所处状态
cur = conn.cursor()
#插入数据
reCount = cur.execute('insert into students(name, sex, age, tel, nal) values(%s, %s, %s, %s, %s)',('Jack','man',25,1351234,"CN"))
reCount = cur.execute('insert into students(name, sex, age, tel, nal) values(%s, %s, %s, %s, %s)',('Mary','female',18,1341234,"USA"))

conn.commit()  #实例提交命令

cur.close()
conn.close()
print(reCount)
로그인 후 복사


결과 보기:


아아앙


3.데이터 가져오기


mysql> select* from students;+----+------+-----+-----+-------------+------+
| id | name | sex | age | tel         | nal  |
+----+------+-----+-----+-------------+------+
|  1 | zcl  | man |  22 | 15622341234 | NULL |
|  2 | alex | man |  30 | 15622341235 | NULL |
+----+------+-----+-----+-------------+------+
2 rows in set
로그인 후 복사


출력:


import pymysql

conn = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='zcl')
cur = conn.cursor()

reCount = cur.execute('select* from students')

res = cur.fetchone()       #获取一条数据
res2 = cur.fetchmany(3)   #获取3条数据
res3 = cur.fetchall()     #获取所有(元组格式)
print(res)
print(res2)
print(res3)
conn.commit()

cur.close()
conn.close()
로그인 후 복사


3. 트랜잭션 롤백

데이터가 데이터베이스에 기록되기 전에 트랜잭션 롤백이 실행됩니다. .rollback() 인스턴스가 conn.commit() 명령을 커밋하기 전입니다. 데이터를 제출하지 않는 한 롤백은 가능하지만 롤백 후 ID가 증가합니다. 다음 예를 참조하세요.

3개의 데이터를 삽입합니다(트랜잭션 롤백 참고):


(1, 'zcl', 'man', 22, '15622341234', None)
((2, 'alex', 'man', 30, '15622341235', None), (5, 'Jack', 'man', 25, '1351234', 'CN'), (6, 'Mary', 'female', 18, '1341234', 'USA'))
()
로그인 후 복사

명령 실행 전과 명령 실행 후(롤백 작업 포함)(ID 번호 참고): 위 코드를 실행하지 않은 것과 위 코드를 실행한 결과는 동일합니다. 트랜잭션이 롤백되었기 때문에 학생들은!!


import pymysql
#连接数据库zcl
conn=pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='zcl')
#生成游标,当前实例所处状态
cur=conn.cursor()
#插入数据
reCount=cur.execute('insert into students(name, sex, age, tel, nal) values(%s, %s, %s, %s, %s)', ('Jack', 'man', 25, 1351234, "CN"))
reCount=cur.execute('insert into students(name, sex, age, tel, nal) values(%s,%s,%s,%s,%s)', ('Jack2', 'man', 25, 1351234, "CN"))
reCount=cur.execute('insert into students(name, sex, age, tel, nal) values(%s, %s, %s, %s, %s)', ('Mary', 'female', 18, 1341234, "USA"))

conn.rollback()      #事务回滚
conn.commit()        #实例提交命令

cur.close()
conn.close()
print(reCount)
로그인 후 복사

명령 실행 후(롤백 작업 제외): 위 코드의 11번째 줄을 주석으로 처리하세요.


mysql> select* from students;+----+------+--------+-----+-------------+------+
| id | name | sex    | age | tel         | nal  |
+----+------+--------+-----+-------------+------+
|  1 | zcl  | man    |  22 | 15622341234 | NULL |
|  2 | alex | man    |  30 | 15622341235 | NULL |
|  5 | Jack | man    |  25 | 1351234     | CN   |
|  6 | Mary | female |  18 | 1341234     | USA  |
+----+------+--------+-----+-------------+------+
4 rows in set
로그인 후 복사


요약: 트랜잭션이 롤백되더라도 ID는 그대로 유지됩니다. incremented 롤백으로 인해 취소되지는 않지만 데이터의 일관성에 영향을 미치지는 않습니다 (기본 원리는 모르겠습니다 ~)

4. 데이터 삽입 일괄


mysql> select* from students;+----+-------+--------+-----+-------------+------+
| id | name  | sex    | age | tel         | nal  |
+----+-------+--------+-----+-------------+------+
|  1 | zcl   | man    |  22 | 15622341234 | NULL |
|  2 | alex  | man    |  30 | 15622341235 | NULL |
|  5 | Jack  | man    |  25 | 1351234     | CN   |
|  6 | Mary  | female |  18 | 1341234     | USA  |
| 10 | Jack  | man    |  25 | 1351234     | CN   |
| 11 | Jack2 | man    |  25 | 1351234     | CN   |
| 12 | Mary  | female |  18 | 1341234     | USA  |
+----+-------+--------+-----+-------------+------+
7 rows in set
로그인 후 복사


pycharm에서 출력: 5

mysql 터미널 표시:

import pymysql
#连接数据库zcl
conn = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='zcl')
#生成游标,当前实例所处状态
cur = conn.cursor()
li = [
    ("cjy","man",18,1562234,"USA"),
    ("cjy2","man",18,1562235,"USA"),
    ("cjy3","man",18,1562235,"USA"),
    ("cjy4","man",18,1562235,"USA"),
    ("cjy5","man",18,1562235,"USA"),
]

#插入数据
reCount = cur.executemany('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)', li)

#conn.rollback()  #事务回滚
conn.commit()  #实例提交命令

cur.close()
conn.close()
print(reCount)
로그인 후 복사
배운 내용은 시간에 맞춰 요약해야 하며, 잊어버린 내용도 있습니다~_~


Python 데이터베이스 mysql 작업에 대한 자세한 기사는 , PHP 중국어 웹사이트를 주목해주세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿