-
PyQt5使用QSqlDatabase類連接數據庫。
-
一般可以使用其靜態方法addDatabase()來創建QSqlDatabase對象。addDatabase()方法有兩個參數,第一個參數是驅動名稱字符串,比如“QODBC”;第二個參數是連接名稱字符串,由用戶自行定義,也可以省略,省略時創建默認數據庫連接。QSqlDatabase對象創建后,可以使用靜態方法database()獲取其引用,其第一個參數是數據庫名稱字符串,第二個參數是布爾值(默認值為True),用於設置是否打開數據庫,如果兩個參數都省略,返回默認數據庫並打開。
-
創建數據庫對象后需要對其進行設置,相關的設置方法有setHostName()、setPort()、setDatabaseName()、setUserName()、setPassword()等。在使用ODBC驅動時,setDatabaseName()比較重要,它的參數可以是DSN名稱,也可以是數據庫連接字符串。這些設置必須在數據庫打開前完成,否則無效。
-
數據庫對象設置完畢后,使用open()方法打開,使用close()方法關閉。
-
-
PyQt5使用QSqlQuery對象操作數據庫。
-
可使用QSqlQuery(database)構造方法來創建數據庫對象,如果省略參數,則使用默認數據庫連接。
-
可使用QSqlQuery的exec()方法執行SQL語句。
-
-
舉例:連接Sql Server數據庫並獲取所有數據庫名稱。
#導入QtSql模塊
from PyQt5.QtSql import QSqlDatabase, QSqlQuery
#創建數據庫連接並打開(未指定數據庫名,創建默認連接)
db = QSqlDatabase.addDatabase("QODBC")
db.setDatabaseName("Driver={Sql Server};Server=localhost;Database=master;Uid=sa;Pwd=123456")
db.open()
#創建查詢對象(使用默認數據庫連接)
query = QSqlQuery()
#查詢數據庫名(保存在master.sys.databases表中)
query.exec("Select name From sys.databases")
#依次打印數據庫名(系統數據庫除外)
while query.next():
#獲取名稱字段的值
name = query.value("name")
#如果不是系統數據庫,打印之
if name.lower() not in ('master', 'tempdb', 'model', 'msdb'):
print(name)
#關閉數據庫
db.close()