天天看點

pymysql使用(二)

import pymysql           
db = pymysql.connect("localhost","root","","hank") #打開資料庫 (如果連接配接失敗會報錯)           
cursor = db.cursor() #擷取遊标對象           
sql_select = "select version()" #執行sql查詢操作
cursor.execute(sql_select)           

1

data = cursor.fetchone() #使用fetchone()擷取單條資料
print("DB version is : %s" % data)           

DB version is : 5.6.39

cursor.execute("drop table if exists hankleo") #如果hankleo表存在,就删除           
#建立表hankleo
sql_create = "create table hankleo(id int,name varchar(10)) engine = innodb charset = utf8"           
cursor.execute(sql_create)           
#插入操作
sql_insert = '''insert into hankleo(id,name) values(2,"李明")'''
try:
    #執行sql
    cursor.execute(sql_insert)
    db.commit()
except:
    #發生異常
    db.rollback()           
#查詢操作
sql_select = '''select * from hankleo'''
try:
    #執行sql語句
    cursor.execute(sql_select)
    #擷取所有記錄清單
    result = cursor.fetchall()
    for row in result:
        id = row[0]
        name = row[1]
        print("id = %d,name = %s" % (id,name))
except:
    print("Error:unable to fecth data")           

id = 2,name = 李明

執行事務

事務機制可以確定資料的一緻性

  1. 事務有四個屬性:原子,一緻,隔離,持久;通常稱為ACID
  2. Python DB API2.0的事務提供了兩個方法:commit 和 rollback
  3. 對于支援事務的資料庫,在python資料庫程式設計中,當遊标建立之時,就自動開始了一個隐形的資料庫事務,這個差別于mysql用戶端,commit()方法送出所有的事務,rollback()方法復原目前遊标的所有操作。

    每個方法都開啟了一個新的事務

#例子
sql_insert = '''insert into hankleo (id,name) values (1,'china')'''
try:
    cursor.execute(sql_insert)
    db.commit()
except:db.rollback()
    
print("end")

#關閉連接配接
db.close()           

end

知識在于點滴積累