我很难通过Python上传到MS,比如说数据库= db1,表= 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)
发布于 2017-04-20 07:39:04
这对于Server来说是正确的行为。通常,当简单地创建一个表(如CREATE TABLE bob (Id int identity, dataValue bigint)
)时,Server将采用模式名称(您希望成为.dbo的部分)。作为当前用户的登录名。通过设置用户的默认架构,可以在创建用户时更改此默认值。
但是,SQL Alchemy也使用"schema“限定符来处理这个问题。从文件中:
Server模式有时需要它们的“模式”限定符的多个部分,即将数据库名称和所有者名称作为单独的标记,例如mydatabase.dbo.some_table。可以使用表的Table.schema参数立即设置这些多部分名称: 表( "some_table",元数据,列(“q”,字符串(50)),schema="mydatabase.dbo“)
https://stackoverflow.com/questions/43523061
复制