gpt4 book ai didi

python - 使用 pyodbc 在 SQL Server 中创建模式

转载 作者:行者123 更新时间:2023-11-28 17:33:15 25 4
gpt4 key购买 nike

我正在使用 pyodbc 从 SQL Server 数据库中读取数据,并在其他地方的不同数据库中创建相同结构的类似副本。

本质上:

  for db in source_dbs:
Execute('create database [%s]' % db) # THIS WORKS.
for schema in db:
# The following result in an error starting with:
# [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]

Execute('create schema [%s].[%s]' % (db, schema)
# Incorrect syntax near '.'

Execute('use [%s]; create schema [%s]' %(db, schema)
# CREATE SCHEMA' must be the first statement in a query batch.

在此示例中,您可以假设 Execute 使用 pyodbc 创建游标并执行参数 SQL 字符串。

我能够创建空数据库,但我不知道如何在其中创建模式。

是否有解决方案,或者这是将 pyodbc 与 MS SQL Server 一起使用的限制?

编辑:FWIW - 我还尝试将数据库名称传递给 Execute,因此我可以尝试在连接字符串中设置数据库名称。这也不起作用 - 它似乎完全忽略了数据库名称。

最佳答案

Python 数据库连接通常默认启用事务(autocommit == False),而 SQL Server 往往不喜欢在事务中执行某些 DDL 命令。

我刚刚尝试了以下方法,它对我有用:

import pyodbc
connStr = (
r"Driver={SQL Server Native Client 10.0};"
r"Server=(local)\SQLEXPRESS;"
r"Trusted_connection=yes;"
)
cnxn = pyodbc.connect(connStr, autocommit=True)
crsr = cnxn.cursor()
crsr.execute("CREATE DATABASE pyodbctest")
crsr.execute("USE pyodbctest")
crsr.execute("CREATE SCHEMA myschema")
crsr.close()
cnxn.close()

关于python - 使用 pyodbc 在 SQL Server 中创建模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32831375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com