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

Python连接MSSQL查询数据库名时如何去除结果外层的方括号

解决方案

首先你的代码存在一处显式笔误:创建游标时调用的sce.cursor()中sce是未定义变量,需要替换为你前面创建的连接实例db_connection,否则代码会直接抛出NameError。

返回结果中数据库名被方括号包裹,是当前ODBC连接上下文默认开启了标识符引用包装导致的,sys.databases视图的name字段本身存储的是无括号的原始库名,你可以任选以下一种方法修复:

方法1:SQL层直接返回清洗后的结果(推荐)

建议连接时显式指定连接到master系统库(避免空database参数触发异常配置),同时在查询语句中直接处理掉方括号,从数据源层面拿到干净的结果:

import pyodbc
import pandas as pd

db_connection = pyodbc.connect(
    Driver='{ODBC Driver 17 for SQL Server}',
    database='master',
    server='servername',
    Trusted_Connection='yes'
)
db_cursor = db_connection.cursor()
db_cursor.execute("SELECT REPLACE(REPLACE(name, '[', ''), ']', '') AS db_name FROM sys.databases")
table_rows = db_cursor.fetchall()
# 生成DataFrame时直接指定列名,避免默认数字列名
df = pd.DataFrame(table_rows, columns=['database_name'])
print(df)

方法2:Python层对结果做字符串处理

如果不想修改SQL逻辑,可以在拿到查询结果后,对DataFrame对应列做字符串截取,去掉首尾的方括号:

# 原有查询逻辑不变,拿到table_rows后做如下处理
df = pd.DataFrame(table_rows)
# 去掉第一列值首尾的方括号
df[0] = df[0].str.strip('[]')
# 可选:重命名列方便后续使用
df = df.rename(columns={0: 'database_name'})
print(df)

两种方法最终都会输出不带方括号的数据库列表:

database_name
0        master
1        tempdb
2         model
3          msdb
4     StudiesDB
5       Studies
6         study
7          Test

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 11:24:10