在进行pyqt5和SQL Server进行连接时,输入参考网上的相关代码后,但无法进行连接
#导入QtSql模块
from PyQt5.QtSql import QSqlDatabase, QSqlQuery
#创建数据库连接并打开(未指定数据库名,创建默认连接)
db = QSqlDatabase.addDatabase("QODBC")
db.setDatabaseName("Driver={Sql Server};Server=LAPTOP-GKV1SQBI;Database=WDDB;Uid=sa;Pwd=123456")
db.open()
ok = db.open()
print(ok)
"测试是否成功,记得关闭连接"
if ok:
db.close()
print("Database closed")
如果直接运行,则不报错,用if语句对其进行判断,则显示false。
参考网上代码后,已根据本机运行环境对服务器名,SQL Server的数据库名,用户名,以及密码都进行了修改。通过这些信息,对python和SQL Server已成功地进行了连接,以确保这些信息无误
成功进行连接
查看open方法是否有返回值
如果open方法没有返回值
你需要判断isOpened属性,而不是用一个变量去接
先确保用比如navicat能连
1、用navicat工具测试连接SQL Server是否成功,测试连接成功说明SQL Server服务没问题
2、SQL Server服务没问题的情况下,说明PyQt5代码连接有问题,检查一下PyQt5.QtSql 模块是否安装成功
检查一下python连接SQLServer驱动是否安装正确
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()