久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Python全棧介紹MySQL數據庫的示例

153次閱讀
沒有評論

共計 10974 個字符,預計需要花費 28 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這篇文章給大家分享的是有關 Python 全棧介紹 MySQL 數據庫的示例的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考。一起跟隨丸趣 TV 小編過來看看吧。

主要三個方面:

1.Linux 終端命令

2.MySQL 語句

3.Python 調用

終端命令:

vi                                                                 文本編輯器

cat /etc/password | grep“用戶名”        獲取 user 表

sudo -i                                                       獲取 root 權限

sudo apt-get install python3-pip             安裝 pip3

sudo pip3 install pymysql                         安裝 mysql

sudo apt-get install mysql-server             安裝服務端

sudo apt-get install mysql-client             安裝客戶端

sudo apt-get update                               讀取列表 保存到 /var/lib/apt/lists

sudo apt-get upgrade                             對比下載列表并更新

sudo /etc/init.d/mysql status                   查詢狀態

sudo /etc/init.d/mysql stop                     停止服務

sudo /etc/init.d/mysql restart                 重啟服務

sudo /etc/init.d/mysql reload                 重新加載

mysql - h 主機地址 - u 用戶名 - p 密碼           鏈接 mysql

修改 mysql 默認字符集:

sudo -i                                                                       1. 獲取 root

chmod  644 文件名                                                    2. 修改文件權限

cd etc/mysql/mysql.conf.d                                        3. 進入配置文目錄

cp etc/msql.cnf/mysqld.cnf.bak                                4. 備份

subl mysqld.cnf                                                         5.vi 打開源文件

[mysqld]   目錄

character_set_server = utf8                                       6. 添加命令

/etc/init.d/mysql

mysqldump - u 用戶 - p 源庫名 ~/xxx.sql            

數據備份:

參數:

–all-databases                                                   1. 備份所有庫

庫名                                                                     2. 備份單個庫

-B 庫 1 庫 2..                                                          3. 備份多個庫

庫名 表 1 表 2…                                                     4. 備份指定庫指定表

數據恢復:

mysql -uroot -p 目標庫名 xxx.sql                                  1. 恢復備份庫

mysql -uroot -p –one-database 目標庫名 xxx.sql        2. 恢復備份內某一個庫

恢復:表不刪除 表記錄刪除覆蓋

MySQL 遠程連接:

sudo -i                                                               1. 管理員模式

cd /etc/mysql/mysql.conf.d/                             2.cd 到 mysql 目錄

vi mysqld.cnf                                                     3. 打開注釋掉默認 IP

#bind-address = 127.0.0.1                                4. 保存

/etc/init.d/mysql restart                                    5. 重啟服務

授權用戶:

grant 授權列表 on 庫. 表 to“用戶名“@”%”identified by“密碼”with grant option          1. 命令格式

示例:grant all privileges on *.* to“tiger”@”%”identified by“123”with grant option;          2. 示例

all privileges、select、insert …                              4. 庫. 表: *.*   所有庫所有表  3. 權限列表

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

import pymysql

python2 模塊安裝:

模塊名: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 *                                   導入模塊

(db = pymysql.connect(…))                               1、建立數據庫連接

c = db.cursor())                                                 2、創建游標對象

c.execute(“insert ….”)                                        3、游標方法:

db.commit()                                                      4、提交到數據庫

c.close()                                                            5、關閉游標對象

db.close()                                                         6、斷開數據庫連接:

7.connect 對象:

db = pymysql.connect(參數列表)

1、host:主機地址, 本地 localhost

2、port:端口號, 默認 3306

3、user:用戶名

4、password:密碼

5、database:庫

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 命令,[列表]) 執行 SQL 命令

2、cur.close() 關閉游標對象

3、cur.fetchone() 獲取查詢結果集的第一條數據

((記錄 1),)

4、cur.fetchmany(n) 獲取 n 條

((記錄 1),(記錄 2))

5、cur.fetchall() 獲取所有記錄

ORM:orm(Object Relation Mapping 對象關系映射) 定義:把對象模型映射到 MySQL 數據庫中

SQL 命令:

/var/lib/mysql                                                                          MySQL 數據目錄

show variables like“autocommit”;                                           查詢 commit 事務

begin;                                                                                    開啟事務

commit;                                                                                  提交事務(MySQL 默認自動提交)

rollback;                                                                                終止事務

system sudo -i                                                                           由數據直接進入終端

show databases;                                                                    查看已有庫

create database 庫名;                                                            創建庫

create database 庫名 charcater set utf8;                              指定字符集

show create database 庫名;                                                  查看庫字符集

select database();                                                              查看當前所在庫

use 庫名;                                                                                切換庫

drop database 庫名;                                                              刪除庫

show tables;                                                                          查看已有表

create table 表名(字段名 1 數據類型,….);                          創建表

show create table 表名;                                                          查看表字符集

desc 表名;                                                                              查看表結構

drop table 表名;                                                                      刪除表

insert into 表名 values(值 1),(值 2)…;                            插入完整記錄

insert into 表名(字段名 1,…)values(值 1),…;              插入字段數據

select * from 表名 [where 條件];                                            查詢所有字段

select 字段名 1,字段名 2,…from 表名[where 條件];                查看字段

alter table 表名 add 字段名 數據類型;                                         添加字段

alter table 表名 add 字段名 數據類型 first;                              頭插)

alter table 表名 add 字段名 數據類型 after 字段名;                  指定插入)

alter table 表名 drop 字段名;                                                  刪除字段

alter table 表名 modify 字段名 新數據類型;                            修改數據類型

alter table 表名 rename 表名;                                                表重命名

delete from 表名 where 條件;                                                刪除表記錄(必須加 where)

update 表名 set 字段 1 = 值 1,字段名 2 = 值 2,… where 條件       更改表記錄(必須加 where)

alter table 表名 change 原名 新名 數據類型;                          字段重命名

create table 表名 select .. from 表名 where 條件;                     復制表(不復制 key)

create table 表名 select * from 表名 where false;                     復制表結構(不復制 key)

sex enum(“M”,”F”,”S”)not null defaulf“S”                      約束

show variables like 變量名;                                                    查詢 MySQL 變量

select 字段名列表 from 表名列表;                                              (笛卡爾積)

select t1.name,t2.name from t1,t2 where 條件                         多表查詢

create index 索引名 on 表名(字段名);                                         添加普通索引

create table(….index(字段名),…)                                      創建表時創建普通索引

drop index 索引名 on 表名;                                                      刪除普通索引

show index from 表名;                                                            查看普通索引

create unique index 索引名 on 表名(字段名);                      添加唯一索引

create table 表名(…. , unique key (字段名) );                             創建表時創建唯一索引

drop unique index 索引名 on 表名;                                        刪除唯一索引

show unique index from 表名;                                                查看唯一索引

alter table 表名 add primary key(字段名);                          添加主鍵索引

create table 表名(…. , id int,primary key (字段名) );                 創建表時創主鍵一索引

(id int primary key auto_increment,)auto_increment=10000;     設置自增長起始值

alter table 表名 modify id int auto_increment;                             添加自增長

alter table 表名 auto_increment=20000;                                     修改自增長起始值

alter table 表名 modify id int;                                                       刪除自增長

alter table 表名 drop primary key;                                                 刪除主鍵索引

show index from 表名 G;                                                             查看表索引

desc 表名;                                                                                查看表結構(key)

Non_Unique:1  :index                                                         普通索引(查詢結果)

Non_Unique:0  :unique                                                         唯一索引(查詢結果)

alter table 表名 drop foreign key 外鍵名;                                     刪除外鍵

show create table 表名;                                                                 查看外鍵名

創建外鍵:

create……t1();

create table t2(

foreign key(參考字段名)

references 主表(被參考字段名)

on delete 級聯動作

on update 級聯動作);

添加外鍵:

alter table 表名 add

foreign key(參考字段) references 主表(被參考字段)

on delete …

on update …

級聯動作:

restrict(默認)不允許主表操作從表

cascade:跟隨刪除、更新

set null:主表更改后從表值為 NULL

內鏈接:

select 字段名 from 表 1

inner join 表 2 on 條件

inner join 表 3 on 條件…;

外鏈接. 左鏈接:

以左表為主顯示查詢結果

select 字段名 from 表 1

left join 表 2 on 條件

left join 表 3 on 條件…;

右鏈接

以右表為主顯示查詢結果

數據導入:

load data  infile“文件名”

into table 表名

fields terminated by“分隔符”

lines terminated by“n”;

數據導出:

select … from 表名

into outfile“/var/lib/mysql-files/ 文件名”

fields terminated by“分隔符”

lines terminated by“n”;

數據恢復:

恢復單個庫

mysql -uroot -p 目標庫名 xxx.sql

從所有庫備份中恢復某一個庫(-one-database)

mysql -uroot -p –one-database 目標庫名 xxx.sql

恢復:表不刪除 表記錄刪除覆蓋

數據備份:

mysqldump - u 用戶 - p 源庫名 ~/xxx.sql

–all-databases   備份所有庫

庫名             備份單個庫

-B 庫 1 庫 2..     備份多個庫

庫名 表 1 表 2…   備份指定庫指定表

運行時間檢測:

開啟:set profiling=1;

關閉:set profiling=0;

查詢執行記錄:show profilings;

SQL 查詢:

3.select … 聚合函數 from 表名

1.where

2.group by…

4.having …

5.order by …

6.limit …;

查詢嵌套:

select … from 表名 where 條件(select ….);

2、找出每個國家攻擊力最高的英雄的名字和攻擊值

select name,gongji from sanguo

where

(country,gongji) in

(select country,max(gongji) from sanguo group by country);

where:只能操作表中實際存在的字段

group by:給查詢結果進行分組

having:對查詢結果進一步篩選

distinct:不顯示字段重復值

show engines;                                                                   查看所有存儲引擎

show create table 表名;                                                     查看表的存儲引擎

create table 表名(…)engine=myisam;                                 創建表時指定存儲引擎

alter table 表名 engine=innodb;                                       添加儲存引擎

InnoDB:

InnoDB 特點(2 文件):

行級鎖、支持外鍵、事務操作

.frm(表結構,索引)、.ibd(表記錄)

MyISAM:

MyISAM 特點(3 文件):

獨享表空間、表級鎖

.frm(結構)、.myd(記錄)、.myi(索引)

鎖:

select:加讀鎖之后別人不能更改表記錄, 但可以進行查詢

insert、delete、update:加寫鎖之后別人不能查、不能改

鎖粒度:

表級鎖:myisam

行級鎖:innodb

調優:

1. 選擇合適的存儲引擎

2. 常用字段建立索引

3.where 避免使用 !=、NULL 判斷、or 鏈接、

like 前置 %、in、not in、* 代替字段、

數據類型:

數據類型:

int             大整型(4 個字節) 2**32 – 1(4294967295)

tinyint         微小整型(一個字節)

有符號(signed 默認):-128 ~ 127

無符號(unsigned):0 ~ 255

smallint         小整型(2 字節)

bigint           極大整型(8 字節)

float           浮點數(4 個字節,7 個有效位)

字段名 float(m,n)m:總位數 n:小數位數

decimal         浮點數(28 個有效位)

字段名 decimal(m,n)m:總位數 n:小數位數

將 9 的倍數包裝成 4 個字節

余數   字節

0      0

1-2     1

3-4     2

5-6     3

7-9     4

字段名 enum(值 1,值 2…);              單選(enum)

字段名 set(值 1,值 2…);                多選(set)

(多項放在一個字符串內用,號隔開)

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:不給值默認返回系統時間

時間函數

now()                                                          返回服務器當前的時間

curdate()                                                    返回當前時期

curtime()                                                    返回當前日期

year(date)                                                  返回指定時間的年份

date(date)                                                  返回指定時間的日期

time(date)                                                  返回指定時間的時間

聚合函數

avg(字段名):求該字段的平均值

sum(字段名):求和

max(字段名):最大值

min(字段名):最小值

count(字段名):統計該字段的個數

運算符:+ – * / %

時間運算符

select * from 表名

where 字段名 運算符(時間 -interval 時間間隔單位);

時間間隔單位:1 day | 2hour | 1 minute | 2year | month

數值比較:=  !=     = =

字符比較:=  !=

邏輯比較:and   or

范圍內比較:

1.where 字段名 between 值 1 and 值 2

2.where 字段名 in(值 1,值 2,….)

3.where 字段名 not in(值 1,值 2,…)

空:where name is null

非空:where name is not null

NILL:空值,只能用 is 或 is not 取匹配

“”:空字符串,用 = 或  != 去匹配

模糊比較:

where 字段名 like 表達式

表達式

_ : 匹配單個字符

%:匹配 0 到多個字符

NULL 不會被統計

排序:order by ASC | DESC

顯示:limit 開始顯示位置,條數

每頁顯示 n 條記錄,顯示第 m 頁:

limit(m-1)*n,n

MySQL 與 Python 交互

# mysqlpython.py
#  導入 mysql 模塊
from pymysql import *

 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)

感謝各位的閱讀!關于 Python 全棧介紹 MySQL 數據庫的示例就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向 AI 問一下細節

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-18發表,共計10974字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 建平县| 渑池县| 西乌珠穆沁旗| 东乡| 东莞市| 武定县| 元谋县| 靖州| 包头市| 娄底市| 阿克| 黎平县| 巴林右旗| 通辽市| 安吉县| 临漳县| 广东省| 寿光市| 兴义市| 平定县| 长阳| 正定县| 大安市| 顺平县| 谷城县| 高阳县| 灯塔市| 济宁市| 江永县| 平潭县| 随州市| 阳江市| 十堰市| 贵州省| 昌平区| 潞城市| 延津县| 南汇区| 乌恰县| 安顺市| 和林格尔县|