Python DB-API


一、DB-API

1.1、Python的DB-API,為大多數的數據庫實現了接口,使用它連接各數據庫后,就可以用相同的方式操作各數據庫。

1.2、Python DB-API的使用流程:

  • 引入API模塊
  • 獲取與數據庫的連接
  • 執行sql語句和存儲過程
  • 關閉數據庫連接

1.3、Python操作mysql

Python3以后不支持MySQLdb了,用的是pymysql,這兩個模塊的功能是一模一樣的,而2.x用的是MySQLdb模塊

1.4、示例1:

import pymysql

class TestMysql(object):

def __init__(self): # 這個類的構造器的作用是定義連接,封裝后每次調用的時候不用重新連接,提高系統的資源利用和代碼執行效率
self.dbConfig = {
"host": "192.168.48.136",
"port": 3306,
"user": "xiang",
"passwd": "xiang",
"db": "test"
}
conn = pymysql.connect(**self.dbConfig)
self.a = conn

def select(self):
print("select")

def update(self):
print("update")


if __name__ == '__main__':
conn = TestMysql()

 1.5、示例2:

import pymysql

class Check(object):
def __init__(self):
self.config = {
"host": "172.16.94.85",
"port": 3306,
"user": "sqlalchemy",
"passwd": "sqlalchemy",
"db": "sqlalchemy"
}
self.conn = pymysql.connect(**self.config) #創建連接

def select(self):
cur = self.conn.cursor()  #創建游標
sql = "select * from student;"
cur.execute(sql)   #執行sql
result = cur.fetchall()
return result


if __name__ == '__main__':
check = Check()
print(check.select())

二、Mysql的事物

2.1、一般來說,事物是必須滿足四個條件(ACID):Atomicity(原子性)、Consistency(穩定性)、Isolation(隔離性)、Durability(可靠性)

  • 事物的原子性:一組事物,要么成功,要么撤回
  • 穩定性:有非法數據(外鍵約束之類),事物撤回
  • 隔離性:事物獨立運行,一個事物處理后的結果,影響了其他事物,那么其他事物會撤回,事物的100%隔離,需要犧牲速度
  • 可靠性:軟硬件奔潰后,InnoDB數據表驅動會利用日志文件重構修改,可靠性和高速度不可兼得,innodb flush log at trx commit選項,決定什么時候把事物保存到日志里

2.2、事務處理

在 MySQL 命令行的默認設置下,事務都是自動提交的,即執行 SQL 語句后就會馬上執行 COMMIT 操作。因此要顯式地開啟一個事務務須使用命令 BEGIN 或 START TRANSACTION,或者執行命令 SET AUTOCOMMIT=0,用來禁止使用當前會話的自動提交。

MYSQL 事務處理主要有兩種方法:

①、用 BEGIN, ROLLBACK, COMMIT來實現

BEGIN 開始一個事務 ROLLBACK 事務回滾 COMMIT 事務確認 

②、直接用 SET 來改變 MySQL 的自動提交模式:

SET AUTOCOMMIT=0 禁止自動提交 SET AUTOCOMMIT=1 開啟自動提交 
查看Mysql 是否開啟了事務(默認自動開啟的)
mysql> show variables like 'auto%';

 

 2.3、mysql常用操作:

  • 創建用戶以及授權:grant all on 庫名.表名 to 'user1' identified by 'passwd';
  • 查看授權情況:show grants;
  • 查看表的行數:select count(*) from mysql.user;
  • 查看表的內容:select * from mysql.db;
  • 查詢表相關:select db from mysql.db; select db,user from mysql.db; select * from mysql.db where host like '192.168.%';
  • 插入表數據:insert into db1.t1 values (1, 'abc');
  • 更新表數據:update db1.t1 set name='aaa' where id=1;
  • 清空表內容:truncate table db1.t1;
  • 刪除表:drop table db1.t1;
  • 刪除庫:drop database db1;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM