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))