日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python搭配什么数据库_python 连接操作数据库(一)

發(fā)布時間:2024/7/19 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python搭配什么数据库_python 连接操作数据库(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、下面我們所說的就是連接mysql的應(yīng)用:

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

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

了pip模塊(我們安裝第三方模塊,都是需要這個命令去安裝的),配置完環(huán)境變量之后我們就可以直接在cmd命令行中執(zhí)行要安裝的模塊了,如下:

我這里是已經(jīng)安裝過的,所以提示讓我更新,在你安裝過pymysql模塊之后,就可以直接去調(diào)用了,下面我們來看一個小例子,根據(jù)這個小例子來進行說明:

1 importpymysql2

3 #鏈接數(shù)據(jù)庫,并創(chuàng)建游標(biāo)

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方法去連接數(shù)據(jù)庫,里面的參數(shù)我相信大家都能看懂,那個cur是創(chuàng)建的一個游標(biāo)(執(zhí)行sql,都是使用這個游標(biāo)去執(zhí)行的);下面就開始執(zhí)行sql語句

注釋的那兩行,分別是創(chuàng)建一個t1表,然后往里面插入一條數(shù)據(jù),下面那個executemany是可以一次插入多條記錄,每個記錄是一個元祖,count是受影響的行數(shù);最后你需要執(zhí)行

commit()方法,不然,你做的這些都是白費的,然后把游標(biāo)和連接都關(guān)閉。

簡單的連接就是這樣的簡單。下面我們再來看看游標(biāo)的問題,相信很多的人一開始的時候跟我一樣,對這個游標(biāo)理解不是那么準(zhǔn)確,下面我們來兩段代碼,你就明白了:

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 #取出第一條數(shù)據(jù)

8 line =cur.fetchone()9 print(line)10 #取出所有的數(shù)據(jù)

11 all_line =cur.fetchall()12 print(all_line)13 conn.commit()14

15 cur.close()16 conn.close()

首先我們先來看這段代碼,其中新增的兩條已經(jīng)在代碼中標(biāo)注了,就是取出第一條數(shù)據(jù)和所有的數(shù)據(jù),但是我們看下面的輸出結(jié)果,你就會發(fā)現(xiàn)一些問題了:

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

在你輸出第一條數(shù)據(jù)之后,游標(biāo)就游到了第二條數(shù)據(jù)上,你再輸出所有的數(shù)據(jù),其實就是從第二行開始輸出的;如果你不想輸出1002這條記錄,你可以在第九行的下面加一條這樣的語句:

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

其實我們只需要在創(chuàng)建游標(biāo)的下面加上cur = conn.cursor(cursor=pymysql.cursors.DictCursor),這樣一行代碼就OK了,還是輸出一下結(jié)果吧,不然總感覺少點什么:

1 #鏈接數(shù)據(jù)庫,并創(chuàng)建游標(biāo)

2 conn = pymysql.connect(host='192.168.163.131',port=3306,user='mysql_test',passwd='123456',db='pymysql')3 cur =conn.cursor()4 #把輸出的格式轉(zhuǎn)換成

5 cur = conn.cursor(cursor=pymysql.cursors.DictCursor)6

7 cur.execute('select * from t1')8

9

10 #取出第一條數(shù)據(jù)

11 line =cur.fetchone()12 print(line)13

14 conn.commit()15

16 cur.close()17 conn.close(

=====================輸出結(jié)果=======================

{'name': 'madaqiang', 'id': 1001}

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

SQLAlchemy是Python世界中最廣泛使用的ORM工具之一,它采用了類似與Java里Hibernate的數(shù)據(jù)映射模型,而不是其他ORM框架采用的Active Record模型,SQLAlchemy分為兩部分,一個是常用的ORM對象映射,另一個是核心的SQL expression。第一個很好理解,純粹的ORM,后面這個不是ORM,而是DBAPI的封裝,通過一些sql表達式來避免了直接寫sql語句。簡單的概括一下就是:將對象轉(zhuǎn)換成SQL,然后使用數(shù)據(jù)API執(zhí)行SQL并獲取執(zhí)行結(jié)果。

下面來一下看一下SQLAlchemy的ORM的實現(xiàn)機制,內(nèi)部封裝了些什么:

上圖中的Dialect用于和數(shù)據(jù)API進行交流,根據(jù)配置文件的不同調(diào)用不同的數(shù)據(jù)庫API,從而實現(xiàn)對數(shù)據(jù)庫的操作,如:

mysql+pymysql://:@/[?]

總結(jié)

以上是生活随笔為你收集整理的python搭配什么数据库_python 连接操作数据库(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。