python 串連操作資料庫

來源:互聯網
上載者:User

標籤:

一、下面我們所說的就是串連mysql的應用:

       1、其實在python中串連操作mysql的模組有多個,在這裡我只給大家示範pymysql這一個模組(其實我是感覺它比較好用而已):

            pymysql是第三方的一個模組,需要我們自己安裝,在這裡順便給大家普及一下安裝第三方模組的知識;首先,如果我們在windows上安裝的話,需要先安裝python解譯器,然后里面內建

            了pip模組(我們安裝第三方模組,都是需要這個命令去安裝的),配置完環境變數之後我們就可以直接在dos命令列中執行要安裝的模組了,如下:

             

             我這裡是已經安裝過的,所以提示讓我更新,在你安裝過pymysql模組之後,就可以直接去調用了,下面我們來看一個小例子,根據這個小例子來進行說明:

 1 import pymysql 2  3 #連結資料庫,並建立遊標 4 conn = pymysql.connect(host=‘192.168.163.131‘,port=3306,user=‘mysql_test‘,passwd=‘123456‘,db=‘pymysql‘) 5 cur = conn.cursor() 6  7 # cur.execute(‘create table t1(id INT(10),name VARCHAR(20))ENGINE=InnoDB DEFAULT CHARSET=utf8‘) 8  9 # cur.execute(‘insert into t1(id,name) VALUES (1001,"madaqiang")‘)10 count = cur.executemany(‘insert into t1(id,name ) VALUES (%s,%s)‘,[(1002,‘eric‘),(1003,‘tom‘)])11 12 conn.commit()13 14 cur.close()15 conn.close()

             解釋說明:

                   首先使用pymysql的connect方法去串連資料庫,裡面的參數我相信大家都能看懂,那個cur是建立的一個遊標(執行sql,都是使用這個遊標去執行的);下面就開始執行sql語句

                   注釋的那兩行,分別是建立一個t1表,然後往裡面插入一條資料,下面那個executemany是可以一次插入多條記錄,每個記錄是一個元祖,count是受影響的行數;最後你需要執行

                   commit()方法,不然,你做的這些都是白費的,然後把遊標和串連都關閉。

             簡單的串連就是這樣的簡單。下面我們再來看看遊標的問題,相信很多的人一開始的時候跟我一樣,對這個遊標理解不是那麼準確,下面我們來兩段代碼,你就明白了:

 1 conn = pymysql.connect(host=‘192.168.163.131‘,port=3306,user=‘mysql_test‘,passwd=‘123456‘,db=‘pymysql‘) 2 cur = conn.cursor() 3 cur.execute(‘select * from t1‘) 4  5 # cur.scroll(1,mode=‘relative‘) 6  7 #取出第一條資料 8 line = cur.fetchone() 9 print(line)10 #取出所有的資料11 all_line = cur.fetchall()12 print(all_line)13 conn.commit()14 15 cur.close()16 conn.close()

           首先我們先來看這段代碼,其中新增的兩條已經在代碼中標註了,就是取出第一條資料和所有的資料,但是我們看下面的輸出結果,你就會發現一些問題了:

1 (1001, ‘madaqiang‘)2 ((1002, ‘eric‘), (1003, ‘tom‘))

           在你輸出第一條資料之後,遊標就遊到了第二條資料上,你再輸出所有的資料,其實就是從第二行開始輸出的;如果你不想輸出1002這條記錄,你可以在第九行的下面加一條這樣的語句:

                 cur.scroll(1,mode=‘relative‘),這樣就不會輸出了,如果你感覺輸出的元祖,以後調用的話會比較麻煩,我們可以設定成輸出格式為字典的格式,這樣不管是看還是調用都比較方便了:

                 其實我們只需要在建立遊標的下面加上cur = conn.cursor(cursor=pymysql.cursors.DictCursor),這樣一行代碼就OK了,還是輸出一下結果吧,不然總感覺少點什麼:

 1 #連結資料庫,並建立遊標 2 conn = pymysql.connect(host=‘192.168.163.131‘,port=3306,user=‘mysql_test‘,passwd=‘123456‘,db=‘pymysql‘) 3 cur = conn.cursor() 4 #把輸出的格式轉換成 5 cur = conn.cursor(cursor=pymysql.cursors.DictCursor) 6  7 cur.execute(‘select * from t1‘) 8  9 10 #取出第一條資料11 line = cur.fetchone()12 print(line)13 14 conn.commit()15 16 cur.close()17 conn.close(
=====================輸出結果=======================
{‘name‘: ‘madaqiang‘, ‘id‘: 1001}

         2、下面我們再來看看一個ORM架構(SQLAlchemy),

SQLAlchemy是Python世界中最廣泛使用的ORM工具之一,它採用了類似與Java裡Hibernate的資料對應模型,而不是其他ORM架構採用的Active Record模型,SQLAlchemy分為兩部分,一個是常用的ORM對象映射,另一個是核心的SQL expression。第一個很好理解,純粹的ORM,後面這個不是ORM,而是DBAPI的封裝,通過一些sql運算式來避免了直接寫sql語句。簡單的概括一下就是:將對象轉換成SQL,然後使用資料API執行SQL並擷取執行結果。

 下面來一下看一下SQLAlchemy的ORM的實現機制,內部封裝了些什麼:

 

           中的Dialect用於和資料API進行交流,根據設定檔的不同調用不同的資料庫API,從而實現對資料庫的操作,如:

                 mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]

python 串連操作資料庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.