python3.7 连接sql server出现pymssql.OperationalError: (20009, b'DB-Lib error message 20009, severity 9:\...

  今天在使用python3.7中的pymssql 连接sqlserver的时候遇到的问题:

  pymssql.OperationalError: (20009, b'DB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist (SZS\\SQLEXPRESS)\n') 

  现在已经解决,特地来进行记录。

  1.在使用的python连接sql server的时候,先进行以下配置:

  sql server配置管理器--->SQL Server 网络配置---->选择当前使用的实例------>开启TCP/IP---->找到当前的动态端口号(当前是51091),如下图:

  2.代码如下:

import pymssql
conn = pymssql.connect(host='localhost',server='SZS\SQLEXPRESS', port='51091', user='sa', password='123', database='mysql')
cur = conn.cursor()
sqlstr = "select * from book"
cur.execute(sqlstr)
data = cur.fetchall()
cur.close()
conn.close()
print(data)

  3.执行上方代码结果如下,没有报错

  4.注意点

conn = pymssql.connect(host='localhost',server='SZS\SQLEXPRESS', port='51091', user='sa', password='123', database='mysql')  # 或者
conn = pymssql.connect(host='szs',server='SZS\SQLEXPRESS', port='51091', user='sa', password='123', database='mysql')

  1.在写上面的连接字符串的时候,需要host和server分开,host代表当前的主机名,如自己的pc名或者直接写localhost;

  2.port为第一张图中的51091,如果不写,默认为1433,如果当前的数据库实例不是使用1433的端口,就会报错;


参考:https://blog.csdn.net/djx_6688/article/details/85159278

 

转载于:https://www.cnblogs.com/xifengmo/p/10993287.html

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误是因为你在将一个字符串类型的值插入到了一个整数类型的列中。SQL Server在进行类型转换时,无法将字符串值`'1.0'`转换为整数类型。 要解决这个问题,你可以通过以下几种方式之一: 1. 将字符串值转换为整数类型:如果你确定字符串值可以被转换为整数类型,可以使用`int()`函数将其转换为整数,然后将整数插入到SQL Server中的整数列中。 2. 更改表结构:如果你不能将字符串值转换为整数类型,你可以尝试将SQL Server中的表结构更改为允许字符串类型的列。 3. 使用参数化查询:在插入数据时,你可以使用参数化查询并将参数作为字符串值传递给SQL Server。这将确保在将字符串值插入到整数列中时,SQL Server会正确地将其转换为整数类型。以下是一个使用参数化查询的例子: ``` import pymssql # 假设你有一个字符串类型的值 value = '1.0' # 连接SQL Server数据库 conn = pymssql.connect(server='<server_name>', database='<database_name>', user='<username>', password='<password>') # 创建一个游标对象 cursor = conn.cursor() # 使用参数化查询插入数据 insert_query = "INSERT INTO <table_name> (int_column) VALUES (%s)" cursor.execute(insert_query, (value,)) # 提交更改并关闭连接 conn.commit() conn.close() ``` 在这个例子中,我们使用参数化查询插入一个字符串类型的值。我们将值作为参数传递给`execute()`方法,并在查询中使用占位符`%s`来表示这个参数。在执行查询时,我们将值包装在一个元组中,并将其作为第二个参数传递给`execute()`方法。这将确保在将字符串插入到整数列中时,SQL Server会正确地将其转换为整数类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值