我无法通过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)
答案 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" )