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를 할 수 없었습니다. 이제 너무 게으르다 ㅋㅋㅋ~~
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')) ()
데이터가 데이터베이스에 기록되기 전에 트랜잭션 롤백이 실행됩니다, 따라서 인스턴스가 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는 계속 증가하고 롤백으로 인해 취소되지는 않지만 데이터의 일관성에는 영향을 미치지 않습니다 (기본 원리는 모르겠어요~)
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!