>  기사  >  데이터 베이스  >  MySQL 데이터베이스에 대한 Python 풀 스택 소개

MySQL 데이터베이스에 대한 Python 풀 스택 소개

coldplay.xixi
coldplay.xixi앞으로
2020-12-17 10:38:482230검색

mysql tutorial 열 데이터베이스의 Python 전체 스택 설명

MySQL 데이터베이스에 대한 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 명령:

    /var/lib/mysql                                                                        ~ + -i                                                                                                          ~                                                                                               ​      라이브러리 만들기
  • 데이터베이스 라이브러리 이름 문자 세트 utf8 생성 라이브러리 문자 세트 보기
  • 현재 라이브러리 보기
  • 라이브러리 이름을 사용하세요.                                                                                           ~ 눈에 띄지 않음 테이블 생성

  • show create table 테이블 이름; ~ ~                                                             테이블 삭제

  • 테이블 이름 값에 삽입 ​​(값 1 ), (값 2)… Record

  • 테이블 이름에 삽입(필드 이름 1,…) 값(값 1),…; 필드 데이터 삽입

  • select * from table name [where 조건] ; ; 테이블 이름 필드 이름 데이터 유형을 먼저 추가하세요.                                                                                         테이블 이름 필드 이름 수정 새 데이터 유형

  • 테이블 이름에서 삭제,

  • update 테이블 이름 설정 필드 1=값 1, 필드 이름 2=값 2 ,... where 조건 ​​테이블 레코드 변경(추가해야 하는 위치)
  • 테이블 테이블 이름 변경 원래 이름 새 이름 데이터 유형 변경
  • 테이블 이름 만들기 테이블 이름에서 .. 선택 where 조건;                                 .​​​MySQL 변수 쿼리

  • 테이블 이름 목록에서 필드 이름 목록을 선택합니다.
  • 테이블 이름(필드 이름)에 인덱스 이름을 생성합니다. 테이블 생성(… .index(필드 이름), ...) 테이블, 일반 인덱스 생성

  • 테이블 이름에 인덱스 인덱스 삭제, 일반 인덱스 삭제

  • 다음에서 인덱스 표시

    고유 인덱스 생성 테이블 이름(필드 이름)에 인덱스 이름 삭제 index 테이블 이름의 인덱스 이름; Index

  • alter table 테이블 이름 기본 키 추가(필드 이름) (…. , id int, 기본 키(필드 이름) ); >       

  • (id)로 설정 int 기본 키 auto_increment,)auto_increment=10000; 테이블 이름 수정 id int auto_increment;
  • alter 테이블 테이블 이름 수정 id int; name drop 기본 키;                                                                                                     (키)
  • Non_Unique: 1 : 인덱스 )
  • QNON_UNIQUE: 0: 고유의 유일한 인덱스(쿼리 결과)
  • 테이블 테이블 이름 변경 외래 키 외부 키 이름 삭제
  • Show 테이블 생성 테이블 이름 보기
  • 외래 키 생성:

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 대상 데이터베이스 이름 fbc3711c4e9174b3f4b1d5b0cf01c148 ~/xxx.sql

–all-databases 모든 데이터베이스 백업

라이브러리 이름 단일 데이터베이스 백업

- B 라이브러리 1 라이브러리 2.. 여러 라이브러리 백업

라이브러리 이름 테이블 1 표 2... 지정된 라이브러리 지정된 테이블 백업

런타임 감지:

열기: set profiling=1

닫기: set profiling= 0;

쿼리 실행 기록: 프로파일링 표시;

SQL 쿼리:

3.select … 테이블 이름

1.where

2.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 name

where 필드 이름 연산자( 시간 간격 단위);

시간 간격 단위: 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)
# ((&#39;7c4a8d09ca3762af61e59520943dc26494f8941b&#39;,),)

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제