Python不会上载到Database.dbo.table,而是数据库[username].table

Python不会上载到Database.dbo.table,而是数据库[username].table,python,sql,sql-server,sqlalchemy,Python,Sql,Sql Server,Sqlalchemy,我在通过Python上传到MS SQL时遇到问题,比如database=db1,table=table1,我想上传到db1.dbo.table1,但是我的数据帧被上传到了db1。[我的windows用户名]。table1,我假设这是因为我使用了默认的windows身份验证?任何帮助都将不胜感激,谢谢 from sqlalchemy import create_engine params = urllib.parse.quote_plus("Driver={SQL Server};Server=

我在通过Python上传到MS SQL时遇到问题,比如database=db1,table=table1,我想上传到db1.dbo.table1,但是我的数据帧被上传到了db1。[我的windows用户名]。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)

这是SQL Server的正确行为。通常,当简单地创建一个表时,例如
createtablebob(Id int-identity,dataValue-bigint)
,SQL Server将假定模式名(您希望是.dbo的部分)为当前用户的登录名。通过设置用户的默认模式,可以在创建用户时更改此默认值

然而,SQL Alchemy也使用“模式”限定符处理这个问题。从文件中:

SQL Server架构有时要求其“架构”包含多个部分 限定符,即,包括数据库名称和所有者名称 单独的标记,例如mydatabase.dbo.some_表。这些是多部分的 可以使用Table的Table.schema参数立即设置名称:

桌子( “一些表”,元数据, 列(“q”,字符串(50)), schema=“mydatabase.dbo”)


有关更多信息,请参阅。非常感谢!您能否详细说明如何将其合并到当前代码中?我有:Table('table1',metadata(),schema='db1.dbo');引擎=创建引擎(…);df.to_sql(表1,引擎)。但这对我不起作用。没关系,我想这是pds中的schema参数。to_sql()解决了我的问题,再次感谢!