Python pyodbc.connect()可以工作,但sqlalchemy.create_engine().connect()不能工作

Python pyodbc.connect()可以工作,但sqlalchemy.create_engine().connect()不能工作,python,sql-server,pandas,sqlalchemy,pyodbc,Python,Sql Server,Pandas,Sqlalchemy,Pyodbc,我正在尝试编写一个Python脚本,该脚本可以获取Excel工作表,并将它们作为表导入SQL Server Express(具有Windows身份验证)数据库。为此,我使用pandas将Excel文件读入pandas数据框,然后希望使用pandas.To_sql()将数据导入我的数据库。但是,要使用此函数,我需要使用sqlalchemy.create_engine() 我能够单独使用pyodbc连接到我的数据库,并运行测试查询。此连接使用以下代码完成: def create_connection

我正在尝试编写一个Python脚本,该脚本可以获取Excel工作表,并将它们作为表导入SQL Server Express(具有Windows身份验证)数据库。为此,我使用
pandas
将Excel文件读入
pandas数据框
,然后希望使用
pandas.To_sql()
将数据导入我的数据库。但是,要使用此函数,我需要使用
sqlalchemy.create_engine()

我能够单独使用
pyodbc
连接到我的数据库,并运行测试查询。此连接使用以下代码完成:

def create_connection(server_name, database_name):
    config = dict(server=server_name, database= database_name)

    conn_str = ('SERVER={server};DATABASE={database};TRUSTED_CONNECTION=yes')

    return pyodbc.connect(r'DRIVER={ODBC Driver 13 for SQL Server};' + conn_str.format(**config))

...

server = '<MY_SERVER_NAME>\SQLEXPRESS'
db = '<MY_DATABASE_NAME>

connection = create_connection(server, db)
cursor = connection.cursor()
cursor.execute('CREATE VIEW test_view AS SELECT * FROM existing_table')
cursor.commit()

engine=create\u引擎(“mssql+pyodbc://@C\SQLEXPRESS/?trusted\u connection=yes”)
conn=发动机。连接()。连接
A在Windows上的Python 3.6中为我工作:

从sqlalchemy导入创建引擎
导入URL库
连接线=(
r'Driver=SQL Server的ODBC驱动程序17;'
r'Server=(本地)\SQLEXPRESS;'
r'Database=myDb;'
r'Trusted_Connection=yes;'
)
quoted_conn_str=urllib.parse.quote_plus(conn_str)
引擎=创建引擎(f'mssql+pyodbc://?odbc\u connect={quoted\u conn\u str})
cnxn=引擎连接()
rows=cnxn.execute(“从sys.tables中选择名称”).fetchall()
打印(行)

为什么我们要使用quote_plus()?@alwaysaskingquestions-因为。
engine = create_engine("mssql+pyodbc://@C<MY_SERVER_NAME>\SQLEXPRESS/<MY_DATABASE_NAME>?driver={ODBC Driver 13 for SQL Server}?trusted_connection=yes")
conn = engine.connect().connection
engine = create_engine("mssql+pyodbc://@C<MY_SERVER_NAME>\SQLEXPRESS/<MY_DATABASE_NAME>?trusted_connection=yes")   
conn = engine.connect().connection