sqlalchemy to_sql if_exists = "replace" 创建一个具有不同前缀的 table
sqlalchemy to_sql if_exists = "replace" creates a table with different prefix
当我尝试执行以下代码时,它会在数据库中删除实际的 table 但不会重新创建相同的代码。它没有生成 dbo.TableName 类型,而是创建了 username/TableName.
engine = sqlalchemy.create_engine(
"mssql+pyodbc://server/dbname?driver=ODBC+Driver+13+for+SQL+Server")
df.to_sql("OTD_1_DELIVERY_TRACKING_F_IMPORT", con=engine, if_exists="replace", index=False)
有谁知道如何解决这个问题以便重新创建 dbo.TableName table?
Does anyone know how to fix this so it recreates the dbo.TableName table
发生这种情况是因为用户具有 dbo
以外的默认架构。在非常旧的 SQL 服务器版本中,每个用户都有自己的模式,这是该行为的遗迹。
所以当该用户运行时
DROP TABLE OTD_1_DELIVERY_TRACKING_F_IMPORT
它首先查看用户的默认模式,没有找到任何东西,然后查看 dbo
模式,然后删除 table。但是当用户运行
CREATE TABLE OTD_1_DELIVERY_TRACKING_F_IMPORT ...
它是在用户的默认架构中创建的。
简单的解决方法是将用户的 DEFAULT SCHEMA 更改为 dbo。 EG
ALTER USER [SomeUser] WITH DEFAULT_SCHEMA = dbo;
当我尝试执行以下代码时,它会在数据库中删除实际的 table 但不会重新创建相同的代码。它没有生成 dbo.TableName 类型,而是创建了 username/TableName.
engine = sqlalchemy.create_engine(
"mssql+pyodbc://server/dbname?driver=ODBC+Driver+13+for+SQL+Server")
df.to_sql("OTD_1_DELIVERY_TRACKING_F_IMPORT", con=engine, if_exists="replace", index=False)
有谁知道如何解决这个问题以便重新创建 dbo.TableName table?
Does anyone know how to fix this so it recreates the dbo.TableName table
发生这种情况是因为用户具有 dbo
以外的默认架构。在非常旧的 SQL 服务器版本中,每个用户都有自己的模式,这是该行为的遗迹。
所以当该用户运行时
DROP TABLE OTD_1_DELIVERY_TRACKING_F_IMPORT
它首先查看用户的默认模式,没有找到任何东西,然后查看 dbo
模式,然后删除 table。但是当用户运行
CREATE TABLE OTD_1_DELIVERY_TRACKING_F_IMPORT ...
它是在用户的默认架构中创建的。
简单的解决方法是将用户的 DEFAULT SCHEMA 更改为 dbo。 EG
ALTER USER [SomeUser] WITH DEFAULT_SCHEMA = dbo;