2015-10-22 36 views
0

我正在使用pymssql python库连接到MS SQL数据库以提取数据。带空格的表名 - PYMSSQL和MSSQL

一切正常,直到我遇到一个表名与空间。

这就是下面的代码工作正常

import pymssql 
conn = pymssql.connect(
    server="11.11.11.11", 
    port=1433, 
    user="######", 
    password="######", 
    database="######") 
cursor = conn.cursor(as_dict=True) 
cursor.execute('SELECT * FROM Students') 

,而这些代码不会

import pymssql 
conn = pymssql.connect(
    server="11.11.11.11", 
    port=1433, 
    user="######", 
    password="######", 
    database="######") 
cursor = conn.cursor(as_dict=True) 
cursor.execute('SELECT * FROM [Students Info]') 

我一直在使用“和'包围试过,但我收到的错误是不断

"Invalid object name 'Students Info'.DB-Lib error message 208, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\n")

我已经尝试了多个带空格的表格,并且它们一直给出这个错误。

我自己也尝试从CLI

tsql -H 11.11.11.11 -p 1433 -U ####### -P ######## 
1> select * from [Students Info] 
2> go 

以下和错误已

Msg 208 (severity 16, state 1) from DAYMAP Line 1: "Invalid object name 'Student Info'."

+0

在CLI中你写的表名错误应该是'[学生信息]'不是'[学生信息]'在'学生'中看到's' – wiretext

+0

谢谢。但它们是伪表名,并不影响实际的最终结果。 – Thereissoupinmyfly

+0

你对伪表名的含义是什么?有些不是真正的表格,或者你只是编写了代码? – Paolo

回答

1

在试图重现这个错误,我首先创建一个表,并插入一些数据:

CREATE TABLE [bad idea] (
    [bad idea column] VARCHAR(255) 
) 

INSERT INTO [bad idea] ([bad idea column]) VALUES ('Spaces in DB entity names are generally a bad idea.') 

然后,从tsql中,我可以查询它:

1> SELECT * FROM [bad idea] 
2> GO 
Spaces in DB entity names are generally a bad idea. 

你确定你的列名拼写正确吗?你能分享你正在编辑的确切列名 - 例如,它们都是ASCII字符吗?你连接的SQL Server版本是什么?祝你好运。

+1

感谢您的回复。精确表名称的三个示例是高级缩放,全部运行记录和转换比例。我知道数据库中的空格通常是一个糟糕的主意,我只是想把它读出来。我将尽快检查版本并在下面发布。 – Thereissoupinmyfly