Python 之MySQL連接數據庫

一、安裝pymysql

pip install pymysql

你的系統不支持或者你沒有使用pip來管理python,那麼你可以通過下列方式來完成pymysql的安裝:

git clone https://github.com/PyMySQL/PyMySQL
cd PyMySQL/
python3 setup.py install

注意:安裝的過程中可能會出現"ImportError: No module named setuptools"的錯誤提示,意思是你沒有安裝setuptools,你可以訪問https://pypi.python.org/pypi/setuptools 找到各個系統的安裝方法。

安裝完畢pymysql之後,就可以增刪改查了

首先,鏈接數據庫。你可以這樣連:

# 打開數據庫連接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )

也可以這樣連:

# 連接數據庫
data={
'host':localhost,
'user':testuser,
'passwd':test123,
'db':TESTDB
}
db=pymysql.connect(**data)

還可以這樣連:

# 連接數據庫
db=pymysql.connect(host='localhost', user='testuser', password='test123', db='TESTDB')

以上鍊接方法中,總有一種適合你。

接下來,我們來看看執行sql語句的方法:

# 定義sql語句
sql=‘select * from TESTDB where id=01’
# 創建cursor遊標
cursor=db.cursor()
# 執行sql
cursor.execute(sql)
# 提交到數據庫執行
db.commit()

python查詢pymysql數據庫數據,用fetchone()獲取單條信息,用fetchall()獲取多條信息

fetchone():該方法獲取下一個結果集,結果集是一個對象

fetchall():該方法獲取全部的返回結果行

rowcount():這是一個只讀屬性,並返回執行execute()後影響的行數

# 取得單條結果
cursor.fetchone()
# 取得所有結果
cursor.fetchall()

 

二、python操作查詢數據庫的時候,返回值是  [(,)(,)(,)]  tuple  list類型

這兩個函數,標記一下:

fetchone() :返回單個的元組,也就是一條記錄(row),如果沒有結果 則返回 None

fetchall() :返回多個元組,即返回多個記錄(rows),如果沒有結果 則返回 ()

需要註明:在MySQL中是NULL,而在Python中則是None

 

用法如下所示:

fetchone()用法:cur.execute("select host,user,password from user where user='%s'" %acc)
                           jilu = cur.fetchone()       ##此時 通過 jilu[0],jilu[1],jilu[2]可以依次訪問host,user,password

fetchall()用法:cur.execute("select * from user")

 

(1)如果select本身取的時候有多條數據時:

cursor.fetchone():將只取最上面的第一條結果,返回單個元組如('id','title'),然後多次使用cursor.fetchone(),依次取得下一條結果,直到爲空。

cursor.fetchall() :將返回所有結果,返回二維元組,如(('id','title'),('id','title')),

(2)如果select本身取的時候只有一條數據時:

cursor.fetchone():將只返回一條結果,返回單個元組如('id','title')。

cursor.fetchall() :也將返回所有結果,返回二維元組,如(('id','title'),),

 

備註:其中的id和title爲具體的內容

python在mysql在使用fetchall或者是fetchone時,綜合起來講,fetchall返回二維元組(元組中含有元組),fetchone只返回一維元組。

 

示例代碼:

import pymysql

# 連接數據庫
data={
    'host':"st-mysql-m.a.pa.com",
    'user':'xxxx',
    'passwd':'xxxx',
    'db':'service_db'
}

db = pymysql.connect(**data)

# 定義sql語句
sql= "select *from service_db.t_sms_log where t_sms_log.sMobile = 'xxxxxx'  order by iAutoID  DESC  limit 2"
# 創建cursor遊標
cursor=db.cursor()
# 執行sql
cursor.execute(sql)
# 提交到數據庫執行
db.commit()

# 取得單條結果
result = cursor.fetchall()
print(result[0][0])

# 取得所有結果
# cursor.fetchall()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章