(一)環境的配置
使用python調用mysql數據庫要引進一些庫。
目前我使用的python版本是python3.6。引進庫爲pymysql
其他對應的庫可以有以下選擇:
mysqldb,oursql, PyMySQL, myconnpy 等,參考如下鏈接:
http://dev.mysql.com/doc/connector-python/en/index.html
http://packages.python.org/oursql/
https://github.com/petehunt/PyMySQL/
https://launchpad.net/myconnpy
(二)連接數據庫
conn = pymysql.connect(host='127.0.0.1', user='root', passwd='123456', db='exam', charset='utf8')
cur=conn.cursor()
關於遊標cursor:
close():關閉此遊標對象
fetchone():得到結果集的下一行
fetchmany([size = cursor.arraysize]):得到結果集的下幾行
fetchall():得到結果集中剩下的所有行
excute(sql[, args]):執行一個數據庫查詢或命令
excutemany(sql, args):執行多個數據庫查詢或命令
( 三)數據庫基本操作:
#表的創建
cur.execute("drop table if exists exam_class")
cur.execute("CREATE TABLE IF NOT EXISTS exam_class( \
id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT ,\
big_class VARCHAR(255), \
small_class VARCHAR(255) , \
charact VARCHAR(255) ,\
fre DOUBLE(5,4) ) ")
#注意DOUBLE等浮點數聲明的時候應該是DOUBLE(M,N) m爲數字長度,n爲小數點後的位數
#SELECT查詢操作
select_sql = 'SELECT small_class,big_class,job_intro FROM table2'
try:
cur.execute(select_sql)
print(cur.execute(select_sql))
except:
print("Select is failed")
#INSERT插入操作
cur.execute("INSERT INTO exam_class (big_class, small_class, charact, fre)\
VALUES (%s, %s, %s, %s )", (big_name, small_name, context[m][0], context[m][1]))
conn.commit()
#對於插入、更新等對數據庫進行修改的工作,在插入之後一定要commit提交。
#此時插入操作是插入一些變量轉化成的值。
#正確操作 (%s, %s, %s, %s )", (big_name, small_name, context[m][0], context[m][1])
#錯誤操作 (%s, %s, %s, %s )" %(big_name, small_name, context[m][0], context[m][1])
#更新、刪除同理
#我也很想知道爲什麼這個代碼片的顏色這麼怪,沒有正確識別註釋和代碼
(四)注意事項
- 對於查詢操作而言:
cur.execute(select_sql)
result = cur.fetchall()
for c in cur:
... #cursor是遊標所在位置,如果輸出會發現只有一行數據。
for r in result:
... #result是在對cursor調用fetchall之後,result是獲取的查詢所有結果。result是一個列表,r是每一行數據。
對於數據增刪改之後,一定要提交!提交!提交!
在所有操作完成之後,一個好習慣是關閉數據庫連接,關閉遊標。
cur.close()
conn.close()