2015-10-22 75 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