weixin_41657202 2022-10-26 18:30 采纳率: 68.8%
浏览 31
已结题

PyQt5.QSql的QODBC无法访问SQLServer

PyQt5,SQLserver,QODBC,VSCode
目标是远程访问数据库
目前的代码是这样的
1.. ..db_1 = QSqlDatabase.addDatabase('QODBC')
2.. ..db_1.setHostName('ip地址')
3.. ..db_1.setDatabaseName('ODBC_1') #ODBC数据源中命名的数据源
4.. ..db_1.setUserName('Sa') #用户名
5.. ..db_1.setPassword('* * * ') #密码
6.. ..db_1.setPort(* * *) #端口号
7.. ..db_1.open() #判断是否连接成功,返回布尔值
8.. ..#db_1.close()
9.. ..if db_1.open() == True:
10.. ..print('连接成功')
11.. else:
12.. ..print('连接失败')
当前连接本地SQL server(用户名登录)的思路是这样的,使用PyQt5自带的QODBC驱动,然后在ODBC数据源中设置数据源,然后用上述代码连接数据库。
问题来了,发现在ODBC中设置数据源后,第2行的ip地址给注释掉都能照常访问,第2行ip地址与第6行port号都注释掉也能照常访问,问号脸,看了直发呆
不得不在心里问一句:这根本就没有用到ip和port端口号,何谈的远程连接!
用pymssql的时候,完全可以将host改成ip,再接上port端口号以实现远程连接(另一台局域网内电脑访问本机数据库,本机访问本机数据库),这里连ip和port都没用上,能远程连接吗?
代码拷贝去另一台电脑试了试,果然访问不了,显示连接失败,网上资料说的天花乱坠,合计着都没在另一台电脑上(局域网内)试过。 ..。..。
当然,想在另一台电脑上远程访问本机的数据库,只需要在其上也设置一下数据源即可,名称要与代码中的数据源名称一样,这样换了电脑,代码里的数据源代号一样,能接着跑。(哦,对了,odbc数据源设置时,其中的服务器要改成ip地址)
我坚信,一定还有一种不用打开ODBC数据源并设置数据源的方式来使用PYQT5的QtSql模块访问SQL Server的方式,只是不知道在哪里,不知论坛里的各位谁能提供一个可行的思路。

  • 写回答

2条回答 默认 最新

  • codeaftercode 2022-10-26 21:13
    关注

    你用了ODBC,所以不需要在程序里再设置ip和port了,因为连接参数全都由ODBC设置了,你自已再设置也没用。(setHostName和setPort函数其实是给ODBC以外的连接方式使用的)
    除了ODBC外,你还可以用pymssql连接sql servel

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月4日
  • 修改了问题 10月26日
  • 创建了问题 10月26日

悬赏问题

  • ¥20 校园二手交易小程序搭建
  • ¥15 请问在ubuntu用conda创建环境报错怎么能解决
  • ¥15 STM32CubeMX/proteus按键控制指示灯颜色切换
  • ¥20 python,计算区位熵和扩张指数
  • ¥15 Python环境配置
  • ¥15 大四学生的困惑,有偿提问!
  • ¥15 解决页面无法编入索引:被“noindex”标签排除的问题?
  • ¥15 arduino测量电阻
  • ¥15 快手uid转快手号谁能解决 需要开发
  • ¥15 iis部署Django时css不生效,来个真人,ai不好使