python 조작 my sql 데이터베이스
1.데이터베이스 에 중국 어 를 쓸 수 있 도록 하려 면 데이터 베 이 스 를 만 들 때 아래 명령 을 사용 하 십시오.
create database zcl charset utf8;
2.students 표 구조 보기desc students;
3.students 표 구 조 를 만 드 는 문 구 를 봅 니 다.show create table students;
4.데이터베이스 삭제drop database zcl;
5.새 필드 만 들 기alter table students add column nal char(64);
PS:본인 은 위 에 있 는'간단 한 해석+코드'블 로 그 를 매우 싫어 합 니 다.사실 저 는 my sql 단말기 에 많은 인 스 턴 스 를 썼 습 니 다.그러나 그 당시 컴퓨터 가 동 영상 을 보 는 소프트웨어 를 실 행 했 기 때문에 저 는 Ctrl+C/V 를 할 수 없 었 습 니 다.이제 게 을 러.하하~
2.python 연결 데이터베이스
python 3 은 my sqldb 를 지원 하지 않 습 니 다.그 대체 모듈 은 PyMySQL 이다.본 논문 의 예 는 python 3.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 |
+----+------+-----+-----+-------------+------+
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.comit()를 제출 하기 전에 실 행 됩 니 다.데이터 가 제출 되 지 않 으 면 스크롤 백 할 수 있 지만 스크롤 백 후 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 번호):위의 코드 를 실행 하지 않 은 것 은 위의 코드 를 실행 한 결과 와 같 습 니 다!!트 랜 잭 션 이 스크롤 백 되 었 기 때문에 students 표 는 데 이 터 를 추가 하지 않 습 니 다!
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 |
+----+------+--------+-----+-------------+------+
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 |
+----+-------+--------+-----+-------------+------+
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 에서 출력:5mysql 터미널 디 스 플레이:
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 |
+----+-------+--------+-----+-------------+------+
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 |
+----+-------+--------+-----+-------------+------+
rows in set
이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.