1. 程式人生 > >Python的學習筆記DAY11---python和Mysql

Python的學習筆記DAY11---python和Mysql

       剛使用了eclipse和Pydev實現了在eclipse裡執行python,安裝方法呢就是先安裝eclipse,然後在eclipse裡開啟Help->Install New Software... ,點選Add.在Name填:Pydev,Location中填http://pydev.org/updates,然後一路下一步等下載就好,要是出錯了就重新來一次(我失敗了好幾次才裝好)。然後就是配置直譯器,點選Windows ->Preferences,然選擇pyDev->Interpreter -> Python Interpreter,選好python.exe的安裝路徑然後OK就好了。等他進度條讀完就可以用了。如圖:


        如上圖,執行成功。。。

        Python2.x版本使用MySQLdb包來執行各種資料庫操作,使用的時候直接pip install MySQLdb安裝即可,不過我用的是Python3.x版本,直接裝那個會報錯,百度之後得到的結果是MySQL還未支援Python3.x。然後解決方法是使用pymysql這個庫,這個庫有一個方法install_as_MySQLdb()可以偽裝成MySQLdb。然後在匯入MySQLdb就可以了,雖然eclipse前面還有個叉號:


        對資料庫操作首先要建立連結物件,使用MySQLdb.Connect(host,port,user,passwd,db,charset)來建立連結物件。其中的引數host為伺服器地址,port是埠號,user是資料庫使用者名稱,passwd是資料庫密碼,db是資料庫名,charset是連結編碼,以上引數除了port是數字型別之外其餘均為字串。

        而connection物件支援的方法有:

cursor()   #使用該連結並返回遊標
commit()   #提交當前世務
rollback() #回滾當前事務
close()    #關閉連線
舉例如下:

import pymysql
from django.db.transaction import rollback
pymysql.install_as_MySQLdb()
import MySQLdb

conn = MySQLdb.connect(host = '127.0.0.1',
                       port = 3306,
                       user = 'root',
                       passwd = '123456',
                       db = 'pytest',
                       charset = 'utf8' 
                       )

cursor = conn.cursor()

print(conn)
print(cursor)

cursor.close()
conn.close()
#輸出結果
<pymysql.connections.Connection object at 0x000001B77FE8C7F0>
<pymysql.cursors.Cursor object at 0x000001B701FA4D30>

        資料庫遊標物件consor,用於執行查詢結果和獲取結果。其支援的方法有:

execute(op[,args])  #執行一個數據庫查詢和命令
fetchone()          #取得結果集的下一行
fetchmany(size)     #取得結果集的下size行
fatchall()          #取得結果集剩下的所有行
rowcount            #最近一次execute返回資料的行數或影響行數
close()             #關閉遊標物件

        現有一張user表,結構如下圖:


來查詢此表,程式碼如下:

import pymysql
from django.db.transaction import rollback
pymysql.install_as_MySQLdb()
import MySQLdb

conn = MySQLdb.connect(host = '127.0.0.1',
                       port = 3306,
                       user = 'root',
                       passwd = '123456',
                       db = 'pytest',
                       charset = 'utf8' 
                       )

cursor = conn.cursor()

sql = 'select * from user'
cursor.execute(sql)

print(cursor.rowcount)

rs = cursor.fetchone()
print(rs)

rs = cursor.fetchmany(3)
print(rs)

rs = cursor.fetchall()
print(rs)

cursor.close()
conn.close()

輸出結果:

9
('one', '一', 1)
(('two', '二', 2), ('three', '三', 3), ('four', '四', 4))
(('five', '五', 5), ('six', '六', 6), ('seven', '七', 7), ('eight', '八', 8), ('nine', '九', 9))