一、安裝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()