一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Python淺談-Python操作數(shù)據(jù)庫(kù)之MySQL

 文炳春秋 2020-03-31

Python淺談-Python操作數(shù)據(jù)庫(kù)之MySQL(1)

一、SQL:

  關(guān)系型數(shù)據(jù)庫(kù),是指采用了關(guān)系模型來(lái)組織數(shù)據(jù)的數(shù)據(jù)庫(kù),其以行和列的形式存儲(chǔ)數(shù)據(jù),以便于用戶理解,關(guān)系型數(shù)據(jù)庫(kù)這一系列的行和列被稱(chēng)為表,一組表組成了數(shù)據(jù)庫(kù)。用戶通過(guò)查詢來(lái)檢索數(shù)據(jù)庫(kù)中的數(shù)據(jù),而查詢是一個(gè)用于限

定數(shù)據(jù)庫(kù)中某些區(qū)域的執(zhí)行代碼。關(guān)系模型可以簡(jiǎn)單理解為二維表格模型,而一個(gè)關(guān)系型數(shù)據(jù)庫(kù)就是由二維表及其之間的關(guān)系組成的一個(gè)數(shù)據(jù)組織;

  常見(jiàn)的關(guān)系型數(shù)據(jù)庫(kù)有:Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。

 

二、MySQL簡(jiǎn)介:

  MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQLAB公司開(kāi)發(fā),屬于Oracle旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS(Relational Database Management System,

關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) 應(yīng)用軟件之一;

  MySQL所使用的 SQL(Structured Query Language,是1974年由Boyce和Chamberlin提出的一種介于關(guān)系代數(shù)與關(guān)系演算之間的結(jié)構(gòu)化查詢語(yǔ)言,是一個(gè)通用的、功能極強(qiáng)的關(guān)系性數(shù)據(jù)庫(kù)語(yǔ)言。) 語(yǔ)言是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)

化語(yǔ)言。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),一般中小型網(wǎng)站的開(kāi)發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫(kù);

 

三、MySQL的安裝與使用:

  可以使用的版本有MySQL社區(qū)版本和MariaDB兩個(gè)版本,MySQL下載的地址為 https://dev./downloads/mysql/,MariaDB下載的地址為 https://downloads./ ,選擇合適的版本下載安裝即可;

  關(guān)于MariaDB與MySQL的關(guān)系可以參考 https://baike.baidu.com/item/mariaDB/6466119?fr=aladdin

 

四、MySQL運(yùn)行的原理:  

  1.存儲(chǔ)引擎?

  對(duì)表中數(shù)據(jù)的讀取和寫(xiě)入的程序,默認(rèn)為InnoDB(其他MyISAM、Memory),將表中的數(shù)據(jù)存儲(chǔ)到磁盤(pán);

     以頁(yè)作為磁盤(pán)和內(nèi)存之間交互的基本單位,InnoDB中頁(yè)的大小一般為16KB;

  一次最少把內(nèi)存中的16KB內(nèi)容刷新到磁盤(pán)中,每一行都有固定的格式;

 

 

 

 圖 1 數(shù)據(jù)引擎所處的位置

  2.事務(wù)的概念:

  <1>.什么是事務(wù):

    操作數(shù)據(jù)庫(kù)從讀取到寫(xiě)入的整個(gè)流程,一組原子性的sql查詢, 或者說(shuō)一個(gè)獨(dú)立的工作單元。

  <2>.事務(wù)的特性:

    原子性 Atomic

    一致性 Consistency

    隔離性 Isolation

    持久性 Durable

 

五、使用Python操作MySQL數(shù)據(jù)庫(kù)——SQLAIchemy:  

  1.SQLAIchemy?

  Python SQL工具包和對(duì)象關(guān)系映射器;

  SQLAlchemy是Python SQL工具包和對(duì)象關(guān)系映射器,它為應(yīng)用程序開(kāi)發(fā)人員 提供了SQL的全部功能和靈活性 ;

  它提供了一套眾所周知的企業(yè)級(jí)持久性模式, 專(zhuān)為高效和高性能的數(shù)據(jù)庫(kù)訪問(wèn)而設(shè)計(jì) ,適用于簡(jiǎn)單且Python化的領(lǐng)域語(yǔ)言;

  作者:Mike Bayer     博客:https://techspot./

 

  2.SQLAIchemy的使用思路(主要函數(shù)介紹):

  declarative_base() ->創(chuàng)建基類(lèi)

  class -> 數(shù)據(jù)類(lèi) ->Table

  create_engine -> 數(shù)據(jù)庫(kù)引擎連接數(shù)據(jù)庫(kù)

  session  -> 創(chuàng)建會(huì)話,類(lèi)似事務(wù)

  object -> 創(chuàng)建數(shù)據(jù)對(duì)

  query -> 各種查詢操作

 

  3.Python操作:

  下面是一個(gè)以主機(jī)和管理員多對(duì)多關(guān)系的一個(gè)簡(jiǎn)單的案例:

 

  pip install SQLAIchemy   # 安裝庫(kù)

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:catt1e
from sqlalchemy import create_engine, Column ,Integer ,String, ForeignKey
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import and_
from sqlalchemy import or_
Base = declarative_base()
class Admin(Base):
    '''定義Admin表以及表的字段名'''
    __tablename__= 'admin'
    id = Column('id', Integer, primary_key=True)
    name = Column('name', String(50), unique=True)
    hosts = relationship(
        'Host',
        secondary='admin_host'
    )
    def __repr__(self):
        return self.name
class Host(Base):
    '''定義Host表以及表的字段名'''
    __tablename__= 'host'
    id = Column('id', Integer, primary_key=True)
    name = Column('name', String(50), unique=True, nullable=False)
    admins = relationship(
        'Admin',
        secondary='admin_host'
    )
    def __repr__(self):
        return self.name
class AdminHost(Base):
    '''定義AdminHost表以及表的字段名'''
    __tablename__ = 'admin_host'
    admin_id = Column(Integer, ForeignKey('admin.id'), primary_key=True)
    host_id = Column(Integer, ForeignKey('host.id'), primary_key=True)
# engine = create_engine('mysql+pymysql://username:password@localhost/db')
engine = create_engine('mysql+pymysql://root:Pwdfordb826@localhost/catt1e?charset=utf8') # 引擎
Base.metadata.create_all(bind=engine) # 創(chuàng)建數(shù)據(jù)庫(kù),注意第一次創(chuàng)建完成后要注釋?zhuān)駝t進(jìn)行數(shù)據(jù)庫(kù)操作會(huì)報(bào)錯(cuò)
# session
DBSession = sessionmaker(bind=engine) # 類(lèi)
session = DBSession() # 實(shí)例
def add_admin(session, id, name):
    '''添加管理員'''
    s = Admin()
    s.id = id
    s.name = name
    session.add(s)
    return s
def main():
    # 增加數(shù)據(jù)
    # admin = add_admin(session, 4, 'admin_catt1e')
    # h1 = Host(id=1100, name='webweb.server')
    # h2 = Host(id=2200, name='dbdb.server')
    # h3 = Host(id=3300, name='devdev.server')
    # admin.hosts.append(h1)
    # admin.hosts.append(h2)
    # admin.hosts.append(h3)
    # session.add(admin)
    # session.commit()
    # 查詢數(shù)據(jù)
    print('all: ', session.query(Admin).all())
    print('admin catt1e: ', session.query(Admin).filter(Admin.name.endswith('catt1e')).one())
    print('admin catt1e hosts: ', session.query(Admin).filter(Admin.name.endswith('catt1e')).one().hosts)
    print('dbdb.server的管理員是誰(shuí),從用戶表里開(kāi)始查: ', session.query(Admin).filter(Admin.hosts.any(Host.name=='dbdb.server')).all())
     
if __name__ == '__main__':
    main()

  

  

    

 


__EOF__

作  者catt1e
出  處https://www.cnblogs.com/catt1e/p/12561676.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多

    玩弄人妻少妇一区二区桃花| 国产在线日韩精品欧美| 加勒比东京热拍拍一区二区| 亚洲精品中文字幕熟女| 国产午夜精品亚洲精品国产| 激情五月激情婷婷丁香| 正在播放玩弄漂亮少妇高潮 | 亚洲一区二区精品免费| 国产精品伦一区二区三区四季| 欧美性猛交内射老熟妇| 国产免费人成视频尤物| 亚洲精品国产精品日韩| 欧美做爰猛烈叫床大尺度| 黄色三级日本在线观看| 黄男女激情一区二区三区| 91亚洲人人在字幕国产| 深夜少妇一区二区三区| 国产精品成人一区二区三区夜夜夜| 色婷婷成人精品综合一区| 午夜久久久精品国产精品| 国产精品午夜小视频观看| 欧美一级日韩中文字幕| 丝袜av一区二区三区四区五区| 日韩中文字幕人妻精品| 国产一区二区三区免费福利| 久久99精品日韩人妻| 欧美一级特黄大片做受大屁股 | 日韩精品一区二区三区四区| 东京热加勒比一区二区三区| 黄色污污在线免费观看| 国产又大又猛又粗又长又爽| 激情亚洲内射一区二区三区| 美女黄片大全在线观看| 国产熟女一区二区精品视频| 日韩欧美一区二区久久婷婷| 成人国产激情福利久久| 欧美亚洲三级视频在线观看| 日本午夜精品视频在线观看| 精品日韩国产高清毛片| 黄片免费播放一区二区| 在线视频免费看你懂的|