mysql tutorial 열 데이터베이스의 Python 전체 스택 설명
권장(무료): mysql tutorial
주요 세 가지 측면: 1.Linux 터미널 명령
2.MySQL 문
3.Python 호출
터미널 명령:
vi 텍스트 편집기
cat /etc/password | grep "username" 사용자 테이블 가져오기 sudo -i 가져오기 루트 권한sudo apt-get install python3-pip pip3 설치sudo pip3 install pymysql mysql 설치sudo apt-get install mysql-server 서버 설치sudo apt-get install mysql-client 클라이언트 설치TSudo APT-get 업데이트 읽기 목록 저장 위치/var/lib/APT/Lists
sudo APT-Get 업그레이드 및 업데이트
Sudo /etc/init.d/mysql 상태
sudo/ETC /init.d/mysql stop / etc/
mysql -h 호스트 주소 -u 사용자 이름 -p 비밀번호 off 1. root
chmod 644 파일 이름 가져오기 2. 파일 권한 수정
cd etc/mysql/mysql.conf.d 3. 구성 파일 디렉터리 입력 tCP ETC/MSQL.CNF/MySQLD.CNF.BAK 4. 백업
Subl mysqld.cnf 5.vi 오픈 소스 파일
[mysqld] 디렉터리
Character_Set_SERVER = UTF8 6. 명령 추가 /ETC/ETC/ init .d/mysql
mysqldump -u user -p 소스 라이브러리 이름> ~/xxx.sql 이름 단일 라이브러리 备 -b library 1 library 2.. 3. 여러 라이브러리 백업2 라이브러리 이름 표 1 2 ... 4. 지정된 라이브러리 지정 테이블
데이터 복구:
Mysql -UROOT -P & LT 대상 라이브러리 이름 xxx.sql 1. 백업 라이브러리 복원 Mysql -UROOT -P —ONE -DataBase 대상 라이브러리 이름 & lt; xxx.sql 2. 백업에서 라이브러리 복원: 테이블은 삭제할 테이블 레코드를 삭제하지 않습니다.Mysql 원격 연결:
Sudo -i 1. 관리자 모드
cd CD /etc/mysql/mysql.conf.d/ 2.mysql 디렉토리 vi mysqld.cnf 3. 기본 IP를 열고 주석 처리#bin d-주소 = 127.0.0.1 4. 저장 /etc/init.D/MySQL 다시 시작 5. 서비스 다시 시작승인된 사용자:
라이브러리의 승인된 목록에 "@"%"식별"에 대한 모든 권한을 부여합니다.* 권한 목록python3 모듈 설치:
모듈 이름: pymysql온라인: sudo pip3 install pymysql
오프라인: pymysql-0.7.11 .tar.gz $ tar -zxvf pymyql-0 .7.11.tar .gz $ cd pymysql-0.7.11 $ sudo python3 setup.py install 확인: $ python3 $ python3 ; import pymysql 모듈 설치:모듈 이름: MySQLdb
설치: sudo pip install mysql-python
sqlalchemy 프레임워크 설치:
온라인: sudo pip3 install sqlalchemy
오프라인:
$ tar -zxvf SQLAlchemy-1.2.10.tar.gz $ cd SQLAlchemy-1.2.10
$ sudo python3 setup.py install
확인:
$ python3
>>> import sqlalchemy
>> ;>
Pymysql 사용:from pymsql import * 1. 데이터베이스 연결 설정
c = db.cursor()) 2. 커서 개체 생성
c.실행(“삽입….”) > > 닫기
7.connect 개체:
db = pymysql.connect (매개변수 목록)
1. 호스트: 호스트 주소, localhost
2. 포트: 포트 번호, 기본값은 3306
3. 사용자: 사용자 이름
4. 비밀번호: 비밀번호
5. 데이터베이스: 라이브러리
6. Charset: 인코딩 방식, utf8
8 사용을 권장합니다.객체 연결 방식:
데이터베이스 연결 객체(db) 메서드
1. db.close()는 연결을 닫습니다
2. db.commit()는 실행을 위해 데이터베이스에 제출합니다
3. db.rollback()은 롤백합니다
4. cur = db.cursor( )는 커서 개체를 반환하며, 특정 SQL 명령을 실행하는 데 사용됩니다.
9.커서 개체 메서드:
커서 개체 메서드(cur)
1. cur.execute(sql 명령, [list]) Execute SQL 명령
2. cur.close() 커서 개체를 닫습니다
3. cur.fetchone() 쿼리 결과 집합의 첫 번째 데이터를 가져옵니다
4. cur.fetchmany(n ) n개의 항목을 얻습니다
((레코드 1), (레코드 2))
5. cur.fetchall() 모든 레코드 가져오기
ORM: orm(Object Relational Mapping Object Relational Mapping) 정의: 객체 모델을 MySQL 데이터베이스에 매핑
SQL 명령:
라이브러리 이름을 사용하세요. ~ 눈에 띄지 않음 테이블 생성
show create table 테이블 이름; ~ ~ 테이블 삭제
테이블 이름 값에 삽입 (값 1 ), (값 2)… Record
테이블 이름에 삽입(필드 이름 1,…) 값(값 1),…; 필드 데이터 삽입
select * from table name [where 조건] ; ; 테이블 이름 필드 이름 데이터 유형을 먼저 추가하세요. 테이블 이름 필드 이름 수정 새 데이터 유형
테이블 이름에서 삭제,
테이블 이름 만들기 테이블 이름에서 .. 선택 where 조건; .MySQL 변수 쿼리
고유 인덱스 생성 테이블 이름(필드 이름)에 인덱스 이름 삭제 index 테이블 이름의 인덱스 이름; Index
alter table 테이블 이름 기본 키 추가(필드 이름) (…. , id int, 기본 키(필드 이름) ); >
create…t1();
create table t2(…외래 키(참조 필드 이름)참조 기본 테이블(참조 필드 이름)on 삭제 계단식 작업 on 업데이트 계단식 작업);외래 키 추가:
테이블 테이블 이름 추가
외래 키(참조 필드)가 기본 테이블(참조 필드) 참조 삭제 시 …업데이트 시 …계단식 동작 :
restrict(기본값)는 메인 테이블이 슬레이브 테이블을 작동하는 것을 허용하지 않습니다.
cascade: 팔로우 삭제, 업데이트 set null: 마스터 테이블이 변경된 후 슬레이브 테이블 값이 NULL입니다내부 링크:
테이블 1에서 필드 이름 선택
조건에 따라 테이블 2 내부 조인 조건에 따라 테이블 3 내부 조인...외부 링크:
왼쪽 테이블을 기반으로 쿼리 결과 표시
테이블 1f에서 필드 이름 선택 LEFT JOIN 테이블 2 ON 조건 LEFT JOIN 테이블 3 ON 조건 ...오른쪽 링크
쿼리 결과를 오른쪽 테이블에 표시하는 테이블데이터 가져오기:
데이터 인파일 “파일 이름”
을 테이블 테이블 이름으로 로드
“구분자”로 끝나는 필드“n”으로 끝나는 줄;
데이터 내보내기:
... 테이블 이름에서outfile로 선택 /var/lib/mysql-files/파일 이름""구분 기호"로 끝나는 필드"n"으로 끝나는 줄;
데이터 복구:
단일 라이브러리 복원 mysql -uroot - p < ; 대상 데이터베이스 이름 xxx.sql모든 데이터베이스 백업에서 특정 데이터베이스 복원(-one-database)Mysql -uroot -p –one-database 대상 데이터베이스 이름 < xxx.sql
Restore: 테이블 삭제 덮어쓰기 테이블 레코드 삭제데이터 백업:
mysqldump -u user -p 소스 데이터베이스 이름> ~/xxx.sql–all-databases 모든 데이터베이스 백업 라이브러리 이름 단일 데이터베이스 백업- B 라이브러리 1 라이브러리 2.. 여러 라이브러리 백업
라이브러리 이름 테이블 1 표 2... 지정된 라이브러리 지정된 테이블 백업 런타임 감지: 열기: set profiling=1 닫기: set profiling= 0; 쿼리 실행 기록: 프로파일링 표시;SQL 쿼리:
3.select … 테이블 이름 1.where2.group by…4.having …
5 .order by … 6.limit …;쿼리 중첩:
select … from table name where 조건(select ….) 이름, gongji from sanguo where(국가, gongji) in(국가별로 sanguo 그룹에서 최대(공지) 선택); 그룹화 기준: 쿼리 결과 그룹화
having: 쿼리 결과 추가 필터링distinct: 반복되는 필드 값 표시 안 함엔진 표시;show create table 테이블 이름; 테이블 이름 생성(...)engine=myisam;
InnoDB:InnoDB 기능(2개 파일):
행 수준 잠금, 외래 키 지원, 트랜잭션 작업
.frm(테이블 구조, 인덱스), .ibd(테이블 레코드)
MyISAM:
MyISAM 기능( 파일 3개 ):
select: 읽기 잠금을 추가한 후 다른 사람은 테이블 레코드를 변경할 수 없지만 쿼리할 수는 있습니다. 삽입, 삭제, 업데이트: 쓰기 잠금을 추가한 후에는 확인하거나 변경할 수 없습니다.잠금 세분성 :
테이블 수준 잠금: myisam 행 수준 잠금: innodb조정:
1. 적절한 스토리지 엔진을 선택하세요. 2. !=를 사용하지 마세요. , NULL 판단 또는 링크,
선행 %, in, not in, * 대신 필드,
데이터 유형:
데이터 유형: int ~ 데이터 유형: 서명됨(서명된 기본값) :-128 ~ 127???? float (m, n) m: 총 자릿수 n: 소수 자릿수 decimal 부동 소수점 수(유효 숫자 28자리)-- . 숫자 n: 소수 자릿수
9의 배수를 4바이트로 묶음 나머지 바이트 1-2 ‐ 1 3-4 2 5-6 3 7-9 4필드 이름 열거형(값 1, 값 2…); > 숫자로 구분) date: "YYYY-MM-DD" time: "HH:MM:SS" datetime: "YYYY-MM-DD HH:MM: SS" timestamp: "YYYY -MM-DD HH:MM:SS”datetime: 값이 지정되지 않은 경우 기본적으로 Null을 반환합니다.timestamp: 값이 지정되지 않은 경우 기본적으로 시스템 시간을 반환합니다time 함수now() 서버의 현재 시간을 반환합니다. curdate() 현재 기간으로 돌아가기 rCurtime() 현재 날짜로 돌아가기 Year(날짜) 지정된 시간으로 돌아가기 Date(날짜) ) 지정된 곳으로 돌아가기 time Time(날짜) 지정된 시간으로 복귀 Coctering 함수 avg(필드 이름): 해당 필드의 평균 값 찾기 sum(필드 이름): sum max(필드 이름): 최대값 min(필드 이름): 최소값 count(필드 이름): 필드 수 계산 Operator: + – * / %Time 연산자select * from table namewhere 필드 이름 연산자( 시간 간격 단위); 시간 간격 단위: 1일 | 2시간 | 2년 | 월숫자 비교: = != >= <= =논리적 비교: and or
범위 내 비교:
1.where 필드 이름이 값 1과 값 2 사이
2.where 필드 이름은 (값 1, 값 2,….)
3.where 필드 이름은 (값 1, 값) 2,...)
Empty: 이름이 null인 경우
Non-empty: 이름이 null이 아닌 경우
NILL: Null 값, is 또는 is not과만 일치할 수 있음
"": 빈 문자열, 사용 = 또는 != 일치
퍼지 비교:
필드 이름이 표현식과 같은 경우
표현식
_: 단일 문자와 일치
%: 0과 여러 문자 일치
NULL은 계산되지 않습니다.
정렬: 순서 by ASC |
디스플레이: 제한 시작 표시 위치, 항목 수
페이지당 n개의 레코드 표시, 페이지 m 표시:
제한(m-1)*n, n
MySQL은 Python
# mysqlpython.py # 导入mysql模块 from pymysql import * class MysqlPython: def __init__(self, database, # 库 host="127.0.0.1", # ip地址 user="root", # 用户名 password="123456", # 密码 port=3306, # 端口 charset="utf8"): # 字符集 self.host = host self.database = database self.user = user self.password = password self.port = port self.charset = charset def open(self): # 创建数据库链接函数 self.db = connect(host=self.host, database=self.database, user=self.user, password=self.password, port=self.port, charset=self.charset) self.cur = self.db.cursor() # 创建游标对象 def close(self): # 创建断开数据库链接 关闭游标函数 self.cur.close() self.db.close() def zhixing(self, sql, L=[]): # 创建pymysql.execute() 方法函数 try: self.open() # 链接数据库 self.cur.execute(sql, L) # 参数化执行SQL命令 self.db.commit() # 提交数据 print("ok") except Exception as e: self.db.rollback() # 出错取消提交 print("Failed", e) self.close() # 断开数据库链接 关闭游标 def all(self, sql, L=[]): try: self.open() self.cur.execute(sql, L) result = self.cur.fetchall() return result except Exception as e: print("Failed", e) self.close()
데이터베이스 사용자 로그인
from mysqlpython import Mysqlpython from hashlib import sha1 uname = input("请输入用户名:") pwd = input("请输入密码:") # 用sha1给pwd加密 s1 = sha1() # 创建sha1加密对象 s1.update(pwd.encode("utf8")) # 指定编码 pwd2 = s1.hexdigest() # 返回16进制加密结果 sqlh = Mysqlpython("db4") select = "select password from user where username=%s;" result = sqlh.all(select, [uname]) # print(result) # (('7c4a8d09ca3762af61e59520943dc26494f8941b',),) if len(result) == 0: print("用户名不存在") elif result[0][0] == pwd2: print("登录成功") else: print("密码错误")
ORM sqlalchemy 프레임워크
# 创建一张表 # 连接数据库的模块 from sqlalchemy import create_engine fromsqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer ,String engine = create_engine("mysql+pymysql://root:123456@localhost/db4", encoding="utf8") Base = declarative_base() # orm基类 class User(Base): # 继承Base基类 __tablename__ = "t123" id =Column(Integer, primary_key=True) name = Column(String(20)) address = Column(String(40))Base.metadata.create_all (engine)
위 내용은 MySQL 데이터베이스에 대한 Python 풀 스택 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!