2012-10-02 174 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