[PyQt]PyQt5连接SQL Server数据库,并读取所有数据库名称

  • 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()

原文地址:https://www.cnblogs.com/syh6324/p/9491518.html