MySQL---連接器(python如何操作資料庫媒介,基於python語言)

来源:http://www.cnblogs.com/ivanpan/archive/2017/04/05/6671089.html
-Advertisement-
Play Games

MySQL — 連接器 連接器的概念 它們往往是一類Python包,或者是一類已經寫好的Python庫。這些庫提供了我們Python去連接資料庫伺服器的基本功能。 ​ 既然它是一個包,那麼我們首先學會導入這個包 #! /usr/bin/env python3 # coding: utf-8 ​ fr ...


MySQL — 連接器

連接器的概念

它們往往是一類Python,或者是一類已經寫好的Python庫。這些庫提供了我們Python去連接資料庫伺服器的基本功能。

​ 既然它是一個包,那麼我們首先學會導入這個包

#! /usr/bin/env python3
# coding: utf-8
from mysql import connector
print('導入成功')

執行以上代碼

$ python3 test_connector.py
導入成功

表示我們成功導入了相關的包或者模塊

連接器語法

要學習連接器語法,我們可以參考:https://dev.mysql.com/doc/connector-python/en/

連接

連接有兩個部分,不可或缺:

  • 連接信息: 主機用戶名密碼資料庫名

    db_config = {
        'host': 'localhost',#主機
        'port': 3306,#埠
        'user': '???',#用戶
        'passwd': '???',#密碼
        'db': 'python',#連接的資料庫
    }
  • 連接函數:所有連接器都有的函數,名字叫connect

     
    from mysql.connector import connect

    註意:該函數反回的是一個代表著連接的對象,我們可以把這個連接對象看成是客戶端。

游標

游標是從一個特定的連接中獲取的,cnn中有一個cursor方法,可以返回一個游標對象。

cur = cnn.cursor()

操作資料庫都是通過游標來進行,一個連接可以產生多個游標。

游標,其中有一個execute方法,只需要把我們需要執行的SQL語句當作參數傳入其中,就可以讓連接器指揮MySQL伺服器執行語句。

註意execute並沒有返回值

那麼,查處來的星系在哪呢?

其實,查出來的信息就在我們的游標中。

由於,我們查出來的數據都是以行的形式出現的(查出來的是一條條記錄),全部存在游標里,當我們迭代這個游標的時候,我們其實是依次的拿到了其中的行(記錄),每次輸出我們的迭代項的時候,我們就是輸出了其中的一行。

#! /usr/bin/env python3
# coding: utf-8
from mysql.connector import connect
db_config = {
    'host': 'localhost',
    'port': 3306,
    'user': '???',
    'passwd': '???',
    'db': 'mysql',  # 相當於自動USE
}
cnn = connect(**db_config)
cur = cnn.cursor()
print(cur.execute('SELECT Host, User, authentication_string FROM user'))
for i in cur:
    print(i)

執行上面的代碼

tuple@MyVM:~/testgit/learning_connector$ python3 test_cursor.py
None
(bytearray(b'localhost'), bytearray(b'root'), b'*81BCF9486900824FB0A3746219755FC21C50D058')
(bytearray(b'localhost'), bytearray(b'mysql.sys'), b'*THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE')
(bytearray(b'localhost'), bytearray(b'debian-sys-maint'), b'*599D0C45E62D3A9D58D74C0C5008688F13738AE5')
(bytearray(b'%'), bytearray(b'tuple'), b'*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9')

連接器,會自動幫我們,在Python的數據類型,和Mysql數據類型中自動轉換。

關閉

使用連接器,和使用文件一樣,一定要記得關閉,順序是

  1. 先關游標
  2. 再關連接
 
#! /usr/bin/env python3
# coding: utf-8
from mysql.connector import connect
db_config = {
    'host': 'localhost',
    'port': 3306,
    'user': '???',
    'passwd': '???',
    'db': 'python',  # 相當於自動USE
}
cnn = connect(**db_config)
cur = cnn.cursor()
sql_1 = '''
CREATE TABLE `from_connector` (
  `id` int PRIMARY KEY auto_increment,
  `name` varchar(20) NOT NULL
)
'''
sql_2 = '''
SHOW TABLES
'''
cur.execute(sql_1)
cur.execute(sql_2)
for i in cur:
    print(i)
    
cur.close()
cnn.close()

ps:具有更好的東西,希望能夠跟大家多多交流學習;

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、應儘量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃描。 2、對查詢進行優化,應儘量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。 3、應儘量避免在 where 子句中對欄位進行 null 值判斷,否則將導致引擎放棄使用索引 ...
  • 用管理員身份cmd進入mysql安裝目錄bin里,執行 如果殺毒軟體攔截,添加為信任區 ...
  • 執行資料庫查詢時,有完整查詢和模糊查詢之分。 一般模糊語句格式如下: SELECT 欄位 FROM 表 WHERE 某欄位 LIKE 條件 其中關於條件,SQL提供了四種匹配模式: 1、% :表示任意0個或多個字元。可匹配任意類型和長度的字元,有些情況下若是中文,請使用兩個百分號(%%)表示。 例如 ...
  • 1、選取最適用的欄位屬性 MySQL可以很好的支持大數據量的存取,但是一般說來,資料庫中的表越小,在它上面執行的查詢也就會越快。因此,在創建表的時候,為了獲得更好的性能,我們可以將表中欄位的寬度設得儘可能小。 例如,在定義郵政編碼這個欄位時,如果將其設置為CHAR(255),顯然給資料庫增加了不必要 ...
  • 啟動該隨筆的原因,個人因為辭職較多空檔期,故本著重新學習的動力以及為了記錄自己學習 開始學習一些概念性的東西吧(PS:博主,PHP開發 一枚) Data 數據 :經過語義解釋的值 Database(DB) 資料庫 :數據的倉庫 Database Management System(DBMS) 資料庫 ...
  • 布爾查詢是最常用的組合查詢,不僅將多個查詢條件組合在一起,並且將查詢的結果和結果的評分組合在一起。當查詢條件是多個表達式的組合時,布爾查詢非常有用,實際上,布爾查詢把多個子查詢組合(combine)成一個布爾表達式,所有子查詢之間的邏輯關係是與(and);只有當一個文檔滿足布爾查詢中的所有子查詢條件... ...
  • 使用Sqoop遠程連接MySQL導入數據到HBase資料庫: 出現了拒絕連接的錯誤: 把主機名換成IP地址就正常了。 ...
  • 基本思路就是為mysql.user表增加一條記錄:'hadoop'@'%',這樣,任何主機上的用戶'hadoop'都可以遠程連接MySQL資料庫。於是輸入下麵的命令: 結果出現了錯誤: 這是因為指定了嚴格模式,不能直接往mysql.user表裡面insert用戶: 只能輸入下麵兩個命令來實現: 這樣 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...