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 = 李明
執行事務
事務機制可以確定資料的一緻性
- 事務有四個屬性:原子,一緻,隔離,持久;通常稱為ACID
- Python DB API2.0的事務提供了兩個方法:commit 和 rollback
-
對于支援事務的資料庫,在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
知識在于點滴積累