如何为SQLAlchemy引擎创建传递deprecate_large_types参数
给SQLAlchemy引擎传递deprecate_large_types参数的两种方法
针对SQL Server环境下LargeBinary类型需要设置deprecate_large_types=True的需求,有两种可行的参数传递方式:
方法一:在连接URL后直接追加参数
直接在原有的连接字符串末尾用&拼接参数即可,修改后的代码如下:
server = 'xxxx' username = 'xxx' password = 'xxx' database = 'MemDB' driver = 'ODBC+DRIVER+17+for+SQL+Server' # 追加deprecate_large_types参数 engine_stmt = 'mssql+pyodbc://{}:{}@{}/{}?driver={}&deprecate_large_types=True'.format( username, password, server, database, driver ) engine = sqlalchemy.create_engine(engine_stmt)
方法二:通过create_engine的connect_args传入参数
要是不想把参数写在URL里,也可以在创建引擎时用connect_args传递:
server = 'xxxx' username = 'xxx' password = 'xxx' database = 'MemDB' driver = 'ODBC+DRIVER+17+for+SQL+Server' engine_stmt = 'mssql+pyodbc://{}:{}@{}/{}?driver={}'.format( username, password, server, database, driver ) # 通过connect_args传入参数 engine = sqlalchemy.create_engine( engine_stmt, connect_args={"deprecate_large_types": True} )
设置该参数后,SQLAlchemy会启用新的大类型处理逻辑,LargeBinary会正确映射为SQL Server的VARBINARY(MAX)类型,就能正常创建表了。
内容的提问来源于stack exchange,提问作者euranoo
相关产品推荐
相关产品推荐

