Python語言訪問MySQL數據庫

4.使用python語言訪問MySQL
  1)pymysql庫:Python語言訪問MySQL接口
  -安裝:
    在線:pip install pymysqlpython

    離線:mysql

    第一步:下載安裝包,下載地址:
      https://pypi.org/project/PyMySQL/PyMySQL-0.9.3.tar.gzsql

    第二步:解壓包,並執行安裝
      tar -zxvf PyMySQL-0.9.3.tar.gz
    cd PyMySQL-0.9.3
    python3 setup.py install
  - 驗證:進入Python交互模式,執行導入包操做
    import pymysql
    若是不報錯,則說明安裝成功數據庫

  2)PyMySQL訪問MySQL的流程服務器

@第一步:導入pymysql模塊 import pymysql host = 'localhost'  # 能夠寫ip地址
user = 'root'  # 用戶名
pwd = '123456'  # 密碼
dbname = 'student'  # 指定數據庫

#進行數據庫的鏈接
conn = pymysql.connect(host,user,pwd,dbname) print('數據庫鏈接成功') #建立遊標對象,經過調用數據庫鏈接對象得到遊標
cursor = conn.cursor() #利用cursor對象,執行SQL語句
sql = "select * from acct"  # sql語句
cursor.execute(sql)  # 執行sql語句
 result = cursor.fetchall()#將結果取出,並打印
print(result) cursor.close()#關閉遊標,關閉數據庫鏈接
conn.close()
python鏈接數據庫

3)PyMySQL模塊的主要方法
    - connect: 鏈接數據庫
  參數:ide

    host 服務器地址
    port 服務器端口(省略連默認端)
    user 用戶名
    passwd 密碼
    db 數據庫名稱
    charset 指定編碼格式fetch

    - 鏈接對象支持的方法
   cursor() 獲取遊標
   commit() 提交事務
   rollback() 回滾事務
   close() 關閉遊標優化

    - 遊標對象支持的方法
   execute(sql) 執行SQL語句
   fetchall() 取得查詢結果集中的全部數據
   fetchone() 取查詢結果集中一筆數據
   fetchmany(size) 取得指定筆數數據
   close() 關閉遊標對象編碼

  屬性:
   rowcount 返回修改影響的行數spa

import pymysql from db_conf import * #導入配置

#創建到數據庫服務器的鏈接,建立鏈接對象
conn = pymysql.connect(host, user, \ password, dbname) #建立遊標對象(cursor),經過調用數據庫鏈接 #對象得到遊標
cursor = conn.cursor() #利用cursor對象,執行SQL語句
sql = "select * from acct" cursor.execute(sql) #執行SQL語句

#取出查詢結果,並打印
result = cursor.fetchall() #result是元組
for r in result: #遍歷result
    acct_no = r[0] #帳號
    acct_name = r[1] #戶名
    if r[6]: #判斷是否爲空值
    balance = float(r[6]) #餘額
    else: balance = 0.00 #餘額爲空設置爲0
    print("帳號:%s, 戶名:%s, 餘額:%.2f" % \ (acct_no, acct_name, balance)) #關閉遊標對象
cursor.close() #關閉數據庫鏈接對象
conn.close() 
示例:數據庫查詢數據
示例2:
示例2:插入 # pymysql的插入示例
import pymysql from db_conf import * #導入配置

try: conn = pymysql.connect(host, user, \ password, dbname) #鏈接數據庫 
    cursor = conn.cursor()  #獲取遊標
    #執行SQL語句
    sql = '''insert into acct(acct_no, acct_name, cust_no, acct_type, reg_date, status, balance) values('622345000010','Robert', 'C0010', 1, date(now()), 1, 33.00)'''    
    print(sql) cursor.execute(sql) #執行
    conn.commit() #提交事務
    print("Insert OK") except Exception as e: print("數據庫插入異常") print(e) finally: cursor.close() #關閉遊標
    conn.close() #關閉鏈接
數據庫插入數據
示例3:修改 import pymysql from db_conf import * #導入配置

try: conn = pymysql.connect(host, user, \ password, dbname) #鏈接數據庫 
    cursor = conn.cursor()  #獲取遊標
    #執行SQL語句
    sql = '''update acct set balance = balance + 1000 where acct_no='622345000010' ''' cursor.execute(sql) #執行
    conn.commit() #提交事務
    print("修改筆數:%d" % cursor.rowcount) except Exception as e: print("數據庫修改異常") print(e) finally: cursor.close() #關閉遊標
    conn.close() #關閉鏈接
示例3:數據庫修改數據
示例4:刪除 # pymysql刪除示例
import pymysql from db_conf import * #導入配置

try: conn = pymysql.connect(host, user, \ password, dbname) #鏈接數據庫 
    cursor = conn.cursor()  #獲取遊標
    #執行SQL語句
    sql = '''delete from acct where acct_no='622345000010' ''' cursor.execute(sql) #執行
    conn.commit() #提交事務
    print("刪除筆數:%d" % cursor.rowcount) except Exception as e: print("數據庫刪除異常") print(e) finally: cursor.close() #關閉遊標
    conn.close() #關閉鏈接
示例4:數據庫刪除數據

五、sql語句優化   1)在常常查詢,排序的字段上創建索引   2)儘可能少使用不等於條件判斷,不等於等於放棄使用索引   3)少使用null判斷,null值判斷會放棄使用索引   4)條件判斷少使用or,in,not in 操做符   5)模糊查詢避免%前置   6)查詢時若是select *, 直接攜程字段名稱會提升效率   7)儘可能少在where語句中使用字段進行運算   8)數值類型的字段,進行條件比較時候,通常比字符串比較的效率更高

相關文章
相關標籤/搜索