>  기사  >  백엔드 개발  >  Python을 사용하여 데이터베이스를 운영하는 방법(mysql)

Python을 사용하여 데이터베이스를 운영하는 방법(mysql)

迷茫
迷茫원래의
2017-03-25 16:51:222035검색

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)

결과 보기:

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

3. 데이터 가져오기

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()

출력:

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

3. 트랜잭션 롤백

데이터가 데이터베이스에 기록되기 전에 트랜잭션 롤백이 실행됩니다, 따라서 인스턴스가 conn.commit() 명령을 제출하기 전에 트랜잭션 롤백 Roll conn.rollback()이 수행됩니다. 데이터를 제출하지 않는 한 롤백은 가능하지만 롤백 후 ID가 증가합니다. 다음 예를 살펴보십시오.

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

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)

명령 실행 전과 실행 후 명령이 실행됩니다(롤백 작업 포함)(ID 번호 참고): 위 코드를 실행하지 않은 결과는 위 코드를 실행한 것과 같습니다!! 트랜잭션이 롤백되었기 때문에 학생 테이블에 데이터가 추가되지 않습니다!

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

명령 실행 후(롤백 작업 제외): 위 코드의 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  |
| 10 | Jack  | man    |  25 | 1351234     | CN   |
| 11 | Jack2 | man    |  25 | 1351234     | CN   |
| 12 | Mary  | female |  18 | 1341234     | USA  |
+----+-------+--------+-----+-------------+------+
7 rows in set

요약: 트랜잭션이 롤백되더라도 ID는 계속 증가하고 롤백으로 인해 취소되지는 않지만 데이터의 일관성에는 영향을 미치지 않습니다 (기본 원리는 모르겠어요~)

4. 데이터를 일괄 삽입

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)

pycharm에서 출력: 5

mysql 터미널 화면:

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


mysql> 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  |
| 13 | cjy   | man    |  18 | 1562234     | USA  |
| 14 | cjy2  | man    |  18 | 1562235     | USA  |
| 15 | cjy3  | man    |  18 | 1562235     | USA  |
| 16 | cjy4  | man    |  18 | 1562235     | USA  |
| 17 | cjy5  | man    |  18 | 1562235     | USA  |
+----+-------+--------+-----+-------------+------+
12 rows in set

시간내서 배운 내용을 요약해야 하는데, 잊어버린 것도 있어요~_~

위 내용은 Python을 사용하여 데이터베이스를 운영하는 방법(mysql)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.