You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取config.ini配置无法连接SQL Server,硬编码可正常连接

问题:从config.ini读取SQL Server连接信息无法建立连接,硬编码则正常

无法正常连接的代码

import pyodbc
import configparser

# 读取INI文件
config = configparser.ConfigParser()
config.read('config.ini')
server = config['SQL']['Server']
database = config['SQL']['Database']
username = config['SQL']['Username']
password = config['SQL']['Password']

# 建立SQL Server连接
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)

# 开启自动提交
cnxn.autocommit = True

# 创建数据库
cursor = cnxn.cursor()
cursor.execute('CREATE DATABASE [DB Test TCPOS]')

# 创建表
cursor.execute('USE [DB Test TCPOS 2]')

# 表1
cursor.execute('CREATE TABLE [SHOP] ([SHOP_ID] INT NOT NULL, [SHOP_NAME] NVARCHAR(50), [TIMESTAMP] DATETIME)')
# 表2
cursor.execute('CREATE TABLE [OPERATOR] ([OPERATOR_ID] INT NOT NULL, [OPERATOR_NAME] NVARCHAR(50), [TIMESTAMP] DATETIME)')

# 关闭连接
cnxn.close()

print('数据库和表创建成功。')

config.ini文件内容

[SQL]
Server = 'ZDEVKWS0148\\SQLEXPRESS'
Database = 'master'
Username = 'test_user'
Password = 'test_1'

错误信息

第13行,在
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
pyodbc.OperationalError: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBMSLPCN]SQL Server不存在或访问被拒绝。(17) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][DBMSLPCN]ConnectionOpen (Connect()). (67)')

可正常运行的代码

import pyodbc

# 建立SQL Server连接
server = 'ZDEVKWS0148\\SQLEXPRESS'
database = 'master'
username = 'test_user'
password = 'test_1'
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)

# 开启自动提交
cnxn.autocommit = True

# 创建数据库
cursor = cnxn.cursor()
cursor.execute('CREATE DATABASE [DB Test TCPOS 2]')

# 创建表
cursor.execute('USE [DB Test TCPOS 2]')

# 表1
cursor.execute('CREATE TABLE [SHOP] ([SHOP_ID] INT NOT NULL, [SHOP_NAME] NVARCHAR(50), [TIMESTAMP] DATETIME)')
# 表2
cursor.execute('CREATE TABLE [OPERATOR] ([OPERATOR_ID] INT NOT NULL, [OPERATOR_NAME] NVARCHAR(50), [TIMESTAMP] DATETIME)')

# 关闭连接
cnxn.close()

print('数据库和表创建成功。')

问题原因及解决方法

问题出在config.ini文件里的参数值带了单引号。比如Server = 'ZDEVKWS0148\\SQLEXPRESS',用configparser读取后,server变量的值会包含前后单引号,而硬编码时server的值没有单引号,这导致连接字符串里多了不必要的单引号,从而触发连接错误。

解决方法有两种:

  1. 修改config.ini,去掉所有参数值的单引号:
[SQL]
Server = ZDEVKWS0148\\SQLEXPRESS
Database = master
Username = test_user
Password = test_1
  1. 保持config.ini不变,读取后去除参数值的单引号:
server = config['SQL']['Server'].strip("'")
database = config['SQL']['Database'].strip("'")
username = config['SQL']['Username'].strip("'")
password = config['SQL']['Password'].strip("'")

内容的提问来源于stack exchange,提问作者DarkKnight22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:55:36