Python没有上传到Database.dbo.table,而是数据库。[username] .table代替

时间:2017-04-20 14:55:29

标签: python sql sql-server sqlalchemy

我无法通过Python上传到MS SQL,比如说database = db1,table = table1,我想上传到db1.dbo.table1,而是我的数据帧被上传到db1。[my windows username] .table1,我假设是因为我使用默认的Windows身份验证?任何帮助都应该受到赞赏,谢谢。

from sqlalchemy import create_engine
params = urllib.parse.quote_plus("Driver={SQL 
Server};Server=server1;Database=db1;")
engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
df = somepandasdataframe
df.to_sql(table1,engine)

1 个答案:

答案 0 :(得分:0)

这是SQL Server的正确行为。通常,当简单地创建表(例如CREATE TABLE bob (Id int identity, dataValue bigint))时,SQL Server将假定模式名称(您想要成为.dbo的部分)作为当前用户的登录名。通过设置用户的默认架构创建用户时,可以更改此默认值。

然而,SQL Alchemy也使用" schema"来处理这个问题。预选赛。来自文档:

  

SQL Server架构有时需要多个部分才能使用#34;架构"   限定符,即包括数据库名称和所有者名称   单独的标记,例如mydatabase.dbo.some_table。这些多部分   可以使用Table的Table.schema参数一次设置名称:

     

表(       " some_table",元数据,       列(" q",字符串(50)),       架构=" mydatabase.dbo" )