pymssql和pyodbc成功连接中文名的数据库

因为要写一个小的数据导入工具,用openpyxl读取了xlsx文件,用pyQt5写了界面,然后需要到SQL2000里匹配条码相同的商品,尝试使用pymssql这个库,挺好用的,就是有一个问题,对中文数据库名不支持,不管把连接字串里的charset改成GBK还是GB2312,都是报错。

搜了好久,也没找到解决方案,把github上看到有个博客园的博主写的一条跟帖:[Python学习笔记-SQLSERVER的大批量导入以及日常操作(比executemany快3倍)](https://www.cnblogs.com/Evan-fanfan/p/9728455.html),然后又搜索其他连接sqlserver的python库,发现了pyodbc,参考了这篇文章:[python操作数据库-SQLSERVER-pyodbc](https://www.cnblogs.com/Evan-fanfan/p/12694287.html),尝试了一下,发现pyodbc是可以使用中文名的数据库,另外我也想了个变通方法,在pymssql中也能访问中文名的数据库了。

用pyodbc的方法,直接打开中文名的数据库:
--------------------------------------------------------------------------------------------------
`
import pyodbc

DRIVER = "{SQL Server Native Client 10.0}"
SERVER = "127.0.0.1"
PORT = 1434
UID = "sa"
PWD = "123456"
DATABASE = "S3宏达电器"
CONN = "DRIVER=%s;SERVER=%s,%s;UID=%s;PWD=%s;DATABASE=%s" % (DRIVER, SERVER, PORT, UID, PWD, DATABASE)
db = pyodbc.connect(CONN)
cursor = db.cursor()

res = cursor.execute("""
    select top 5 * from d_goods 
    """).fetchall()

print( res )

db.close()
`

使用pymssql的变通方法,先连master数据库,然后在执行语句的时候,加一个use 中文名的数据库,就可以了:
--------------------------------------------------------------------------------------------------
`
import pymssql
import pprint

server = "127.0.0.1\\sql2000"
port = '1434'
user = "sa"
password = "123456"
database = 'master'
conn = pymssql.connect(server=server, user=user, password=password, database=database, port=port, charset="utf8")
cursor = conn.cursor()

sql = "use %s " % 'S3宏达电器' #注意%s后面有一个空格
sql += "select top 5 * from d_goods "
cursor.execute(sql)

rows = cursor.fetchall()
print(rows)

conn.close()
`

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值