2012-10-02 172 views
3
import pyodbc 
    cnxn = pyodbc.connect('DRIVER={SQL Server};' + 
          'SERVER=' + data.dbConnection()[0] + ';' + 
          'DATABASE=' + data.dbConnection()[3] + ';' + 
          'UID=' + data.dbConnection()[1] + ';' + 
          'PWD=' + data.dbConnection()[2]) 
    cursor = cnxn.cursor() 
    cursor.execute(
    """ 
    CREATE TABLE Persons 
    (
    P_Id int, 
    LastName varchar(255), 
    FirstName varchar(255), 
    Address varchar(255), 
    City varchar(255) 
) 
    """ 
      ) 
    cursor.close() 
    cnxn.close() 

上述代碼成功連接到數據庫。該腳本在運行時也不會返回錯誤,但是當我檢查表是否已創建時,SQL DB中根本沒有表。使用Python腳本在MS SQL數據庫中創建表格

爲什麼沒有創建表,爲什麼沒有錯誤返回?

+1

我會開始查詢創建的表使用相同的連接,也許插入一些東西。機會也會成功。然後,這兩種可能性是:1)沒有自動事務提交開啓2)您正在檢查錯誤的模式並且表實際存在 –

+0

您是正確的,表確實存在。您能否向我解釋如何在Microsoft SQL Management Studio中檢查正確的模式? – iwishiwasacodemonkey

+0

在左側的樹上,打開名爲Databases的節點。系統數據庫中將有一個節點(其中有幾個默認情況下創建)以及您創建的每個用戶數據庫的單獨節點。打開連接到任何數據庫的節點,找到稱爲表的節點,然後打開該節點。現在,您應該可以在數據庫中看到新創建的表和其他任何其他表。右鍵單擊各種選項的表名稱。 –

回答

2

MS SQL Server中的每個用戶都有一個與之關聯的默認架構。配置詳細信息取決於SQL Server的版本,並在企業管理器中進行配置。我不認爲SQL MAnagement工作室具有GUI可見性。
你可以嘗試查詢它使用

select default_schema_name 
, type_desc 
, name 
, create_date 
from sys.database_principals 
order by default_schema_name 
, type_desc 
, name 

您也可以明確pefixing架構名稱表的名稱創建一個特定的模式表進行,即

create myschema.mytable as... 
+0

進一步調查此問題,此行缺失。 'code'cursor.commit()#這個語句將更改寫入數據庫'代碼' 表存在的原因是因爲我檢查的方式發現了臨時表。 – iwishiwasacodemonkey

2

我認爲你需要添加「 cnxn.commit()「命令在close()之前。多數民衆贊成你如何將程序中所做的更改保存到數據庫

+0

我有同樣的問題,這是我的問題的答案。不幸的是,在Microsoft文檔示例中,它沒有說你需要調用commit。 – jax