python筆記二(mysql資料庫操作)

來源:互聯網
上載者:User

標籤:資料庫查詢   關閉   connect   gpo   復原   print   usr   使用者   ogr   

python2.x使用MySQLdb

python3.x使用pymysql代替MySQLdb

不過我使用的是python3.5,MySQLdb還是可以在python3.5使用的。

  1 #!/usr/bin/env python  2 # _*_ coding:utf-8 _*_  3 import pymysql  4 import MySQLdb  5   6 # 開啟資料庫連接  7 db = pymysql.connect("10.35.22.91", "root", "adminadmin", "TESTDB")  8 ‘‘‘  9 db = MySQLdb.connect(host=‘10.35.22.91‘, 10                         user=‘root‘, 11                         port = 3306, 12                         passwd =‘adminadmin‘, 13                         db=‘scrapydb‘, 14                         charset=‘utf8‘) 15 ‘‘‘ 16 # 使用 cursor() 方法建立一個遊標對象 cursor 17 cursor = db.cursor() 18  19 # 使用 execute() 方法執行 SQL,如果表存在則刪除 20 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") 21 # 使用預先處理語句建立表 22 sql = """CREATE TABLE EMPLOYEE ( 23          FIRST_NAME  CHAR(20) NOT NULL, 24          LAST_NAME  CHAR(20), 25          AGE INT,   26          SEX CHAR(1), 27          INCOME FLOAT )""" 28 cursor.execute(sql) 29  30 # SQL 插入語句 31 sql = """INSERT INTO EMPLOYEE(FIRST_NAME, 32          LAST_NAME, AGE, SEX, INCOME) 33          VALUES (‘Mac‘, ‘Mohan‘, 20, ‘M‘, 2000)""" 34 ‘‘‘ 35 # SQL 插入語句第二種方式 36 sql = "INSERT INTO EMPLOYEE(FIRST_NAME,  37        LAST_NAME, AGE, SEX, INCOME)  38        VALUES (‘%s‘, ‘%s‘, ‘%d‘, ‘%c‘, ‘%d‘ )" %  39        (‘Mac‘, ‘Mohan‘, 20, ‘M‘, 2000) 40 ‘‘‘ 41 try: 42    # 執行sql語句 43    cursor.execute(sql) 44    # 提交到資料庫執行 45    db.commit() 46 except: 47    # 如果發生錯誤則復原 48    db.rollback() 49  50 ‘‘‘ 51 資料庫查詢操作 52 Python查詢Mysql使用 fetchone() 方法擷取單條資料, 使用fetchall() 方法擷取多條資料。 53 fetchone(): 該方法擷取下一個查詢結果集。結果集是一個對象 54 fetchall(): 接收全部的返回結果行. 55 rowcount: 這是一個唯讀屬性,並返回執行execute()方法後影響的行數 56 ‘‘‘ 57 # SQL 查詢語句 58 sql = "SELECT * FROM EMPLOYEE  59        WHERE INCOME > ‘%d‘" % (1000) 60 try: 61    # 執行SQL語句 62    cursor.execute(sql) 63    #print(cursor.rowcount) 64    # 擷取所有記錄列表 65    results = cursor.fetchall() 66    for row in results: 67       fname = row[0] 68       lname = row[1] 69       age = row[2] 70       sex = row[3] 71       income = row[4] 72        # 列印結果 73       print ("fname=%s,lname=%s,age=%d,sex=%s,income=%d" %  74              (fname, lname, age, sex, income )) 75 except: 76    print ("Error: unable to fetch data") 77  78 # 資料庫更新操作 79 # SQL 更新語句 80 sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = ‘%c‘" % (‘M‘) 81 try: 82    # 執行SQL語句 83    cursor.execute(sql) 84    # 提交到資料庫執行 85    db.commit() 86 except: 87    # 發生錯誤時復原 88    db.rollback() 89  90 # 資料庫刪除操作 91 # SQL 刪除語句 92 sql = "DELETE FROM EMPLOYEE WHERE AGE > ‘%d‘" % (20) 93 try: 94    # 執行SQL語句 95    cursor.execute(sql) 96    # 提交修改 97    db.commit() 98 except: 99    # 發生錯誤時復原100    db.rollback()101 102 # 關閉資料庫連接103 db.close()104 ‘‘‘105 # 使用 execute()  方法執行 SQL 查詢106 #cursor.execute("SELECT VERSION()")107 108 # 使用 fetchone() 方法擷取單條資料data產生器.109 data = cursor.fetchone()110 111 print("Database version : %s " % data)112 113 # 關閉資料庫連接114 db.close()115 ‘‘‘
錯誤處理

DB API中定義了一些資料庫操作的錯誤及異常,下表列出了這些錯誤和異常:

異常 描述
Warning 當有嚴重警告時觸發,例如插入資料是被截斷等等。必須是 StandardError 的子類。
Error 警告以外所有其他錯誤類。必須是 StandardError 的子類。
InterfaceError 當有資料庫介面模組本身的錯誤(而不是資料庫的錯誤)發生時觸發。 必須是Error的子類。
DatabaseError 和資料庫有關的錯誤發生時觸發。 必須是Error的子類。
DataError 當有資料處理時的錯誤發生時觸發,例如:除零錯誤,資料超範圍等等。 必須是DatabaseError的子類。
OperationalError 指非使用者控制的,而是操作資料庫時發生的錯誤。例如:串連意外斷開、 資料庫名未找到、交易處理失敗、記憶體配置錯誤等等操作資料庫是發生的錯誤。 必須是DatabaseError的子類。
IntegrityError 完整性相關的錯誤,例如外鍵檢查失敗等。必須是DatabaseError子類。
InternalError 資料庫的內部錯誤,例如遊標(cursor)失效了、事務同步失敗等等。 必須是DatabaseError子類。
ProgrammingError 程式錯誤,例如資料表(table)沒找到或已存在、SQL語句語法錯誤、 參數數量錯誤等等。必須是DatabaseError的子類。
NotSupportedError 不支援錯誤,指使用了資料庫不支援的函數或API等。例如在連線物件上 使用.rollback()函數,然而資料庫並不支援事務或者事務已關閉。 必須是DatabaseError的子類。

python筆記二(mysql資料庫操作)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.