Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法通过PyODBC连接创建数据库_Python_Sql_Sql Server_Pyodbc - Fatal编程技术网

Python 无法通过PyODBC连接创建数据库

Python 无法通过PyODBC连接创建数据库,python,sql,sql-server,pyodbc,Python,Sql,Sql Server,Pyodbc,我正在python2.7中使用pyodbc和mssqlserver2008r 下面是我创建数据库的代码(SQL代码,它单独在SQL中运行良好,但在python中执行时崩溃) 但是,我收到以下错误消息: pyodbc.ProgrammingError:('42000','[42000][Microsoft][ODBC SQL 服务器驱动程序][SQL Server]中不允许使用CREATE DATABASE语句 多语句事务。(226)(SQLExecDirectW)’) 我可以知道我的密码有什么问

我正在
python2.7
中使用
pyodbc
mssqlserver2008r

下面是我创建数据库的代码(SQL代码,它单独在SQL中运行良好,但在python中执行时崩溃)

但是,我收到以下错误消息:

pyodbc.ProgrammingError:('42000','[42000][Microsoft][ODBC SQL 服务器驱动程序][SQL Server]中不允许使用CREATE DATABASE语句 多语句事务。(226)(SQLExecDirectW)’)

我可以知道我的密码有什么问题吗

非常感谢

====================================================================================

因此,在接受@Matthias的建议后,我在
删除数据库之后执行了
提交
,然后错误消息变成:

pyodbc.ProgrammingError:('42000',“[42000][Microsoft][ODBC SQL 服务器驱动程序][SQL Server]创建操作系统中遇到的文件 错误123(检索此错误的文本失败。原因:15105)正在 正在尝试打开或创建物理文件 “D:\MSSQL\DATA\NewDatabase\u DATA.mdf.”(5123) (SQLExecDirectW);[42000][Microsoft][ODBC SQL Server驱动程序][SQL 服务器]创建数据库失败。无法创建列出的某些文件名 已创建。请检查相关错误。(1802)”


执行
DROP DATABASE
CREATE DATABASE
命令后,尝试执行
COMMIT
。@Matthias谢谢您的回复。我试过你的建议,还是不行。但错误已更改,新的错误消息已发布,请查看。非常感谢。请尝试:
autocommit=True
请参阅
pyodbc.connect:(str,autocommit='False',ansi='False',timeout='0',**kwargs)
。只是猜测一下:看起来您的程序在此文件夹中没有写权限。@Matthias谢谢您的回复。是的,我有在文件夹中写作的权限。
SQL_command = """
                IF EXISTS(SELECT * FROM sys.databases WHERE [name] = 'NewDatabase')
                    DROP DATABASE NewDatabase
              """

conn.cursor.execute(SQL_command)

SQL_command = """
                CREATE DATABASE NewDatabase
                ON     
                (
                     NAME = 'NewDatabase_data'
                ,    FILENAME='D:\MSSQL\DATA\NewDatabase_data.mdf' 
                ,    SIZE = 4096KB 
                ,    FILEGROWTH = 4096KB 
                ) 
                LOG ON  
                (
                    NAME = 'NewDatabase_log'
                ,   FILENAME='D:\MSSQL\LOG\NewDatabase_log.ldf' 
                ,    SIZE = 4096KB 
                ,    FILEGROWTH = 10%
                ) 
                COLLATE SQL_Latin1_General_CP1_CI_AS
              """

conn.cursor.execute(SQL_command)

SQL_command = """
                ALTER DATABASE 
                    NewDatabase
                SET RECOVERY SIMPLE
              """

conn.cursor.execute(SQL_command)