- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 pymssql 连接到 Apache Airflow 1.10.1 中的 Azure MS SQL Server 2014 数据库时遇到问题。我想使用 Airflow 提供的 MsSqlHook 类,以便于在 Airflow UI 中创建连接,然后使用 SqlAlchemy 为我的连接创建上下文管理器:
@contextmanager
def mssql_session(dt_conn_id):
sqla_engine = MsSqlHook(mssql_conn_id=dt_conn_id).get_sqlalchemy_engine()
session = sessionmaker(bind=sqla_engine)()
try:
yield session
except:
session.rollback()
raise
else:
session.commit()
finally:
session.close()
但是当我这样做时,我在运行请求时遇到此错误:
sqlalchemy.exc.InterfaceError: (pyodbc.InterfaceError) ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)') (Background on this error at: http://sqlalche.me/e/rvf5)
它似乎来自pyodbc,而我想使用pymssql(在MsSqlHook中,方法get_conn使用pymssql!)
我在Airflow的源代码中查找了原因。我注意到类 DbApiHook 中的方法 get_uri(从中继承 MsSqlHook)构建了传递给 SqlAlchemy 的连接字符串em>像这样:
'{conn.conn_type}://{login}{host}/{conn.schema}'
但是 conn.conn_type 只是等于“mssql”,而我们需要指定 DBAPI,如下所述: https://docs.sqlalchemy.org/en/latest/core/engines.html#microsoft-sql-server(例如:'mssql+pymssql://scott:tiger@hostname:port/dbname')
所以,默认情况下,我认为它使用pyodbc。但是如何正确设置连接的 conn_type 为 'mssql+pymssql' 而不是 'mssql' ?在Airflow IU中,您可以简单地在下拉列表中选择SQL server,但不能根据需要进行设置:
为了解决此问题,我在从 MsSqlHook 创建的继承自 MsSqlHook 的新类中重载了 DbApiHook 中的 get_uri 方法,其中我构建了自己的连接字符串,但它根本不干净......
感谢您的帮助
最佳答案
你是对的。没有简单、直接的方法可以让 Airflow 执行您想要的操作。就我个人而言,我会在上下文管理器中构建 sqlalchemy 引擎,例如 create_engine(hook.get_uri().replace("://", "+pymssql://"))
——然后我会把代码扔到可重用的地方。
关于python - Apache Airflow - 使用 pymssql + SQLAlchemy 与 MS SQL Server 的连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53616630/
我想在 pymssql 中接收行作为字典。在 python-idle 我跑了: >>> conn = pymssql.connect(host='192.168.1.3', user='majid',
我已经编写了一个围绕 pymssql 的包装器来连接到我工作的数据库。我遇到了 unicode 解码/编码错误,我正在尝试从源头上阻止它们。 当我指定 charset='latin1' 或 'iso-
我在 django 项目中使用 pymssql 连接到数据库。我正在尝试使用execute()方法进行插入。 但是我收到此错误: Cannot insert the value NULL into c
我正在尝试从远程服务器上的 python 3.4 连接到 SQL Server 命名实例,但出现错误。 File "C:\Scripts\Backups Integrity Report\Backup
我在 Linux 上运行 pymssql 包(版本 1.0.2)时遇到问题。看起来我可以成功连接并向服务器发出 SQL 语句,但查询返回空白结果。我已经确认 CREATE TABLE 和 INSERT
我已下载 Pymssql 以连接到 sqlserver 数据库,但连接字符串抛出错误-pymssql.connect(pymssql.c.:7990) import pymssql pymssql.c
我正在尝试使用 Python 的 pymssql 连接到 Azure SQL 服务器。问题是以下脚本可以工作,但只是有时有效,其他时候我会收到此错误: _mssql.MSSQLDatabaseExce
我正在尝试在 SQL 服务器上执行存储过程并使用 python 保存结果——我决定使用 pymssql,因为它似乎是最简单的解决方案。 print pymssql.__version__ server
我可以在 pymssql 中使用哪些占位符。我从 html 查询字符串中获取我的值,因此它们都是字符串类型。这对于 sql 注入(inject)安全吗? query = dictify_queryst
我正在尝试使用来自 here 的二进制文件安装 FreeTDS , 在 Windows 上,但我不知道如何安装二进制文件;谷歌搜索没有找到任何相关内容。我正在安装,以便可以导入和使用 Python 模
我以前使用的是 MySQL,并且有一个使用 REGEXP 的查询。我正在尝试查找以某些字符开头的 site_id,并使用了以下内容: WHERE site_id REGEXP '^(AB|BC|AO|
我必须将 MSSQL Server 数据库与 Django 中的项目一起使用,我使用 django-pymssql 依赖,一开始一切正常。 当我运行初始迁移时,它会抛出一个错误: django.db.
我需要将 numpy 数组存储在 MS SQL 数据库的 varbinary(max) 字段中。在 MySQL 中这是一个简单的任务,但 MS SQL 则更加危险。为了能够存储一些东西,我需要像这样使
我们的一些数据挖掘工作陷入僵局并失去联系。挑战是我们想在 Python pymssql 模块因死锁而失败时捕捉到。 File "pymssql.pyx", line 465, in pymssql.C
我有 freetds.conf 和 dbserver 连接到数据库服务器 (我通常将其用于 PHP),该服务器位于我们自己网络上的单独服务器上。 只是为了测试连接,我有这个小程序: from sqla
当我们的 MS SQL 服务器变得不可访问时,我们遇到了这个问题。这在我们的代码中造成了一个错误,使我们的程序戛然而止,当然还有用户的干草叉和手电筒来到我们家门口。我们已经能够将我们的问题归结为:如果
我是 python 的新手,我正在尝试编写一个将值放入 SQL 数据库的脚本。 它是一个简单的 2 列表,如下所示: CREATE TABLE [dbo].[pythonInsertTest](
我正在尝试通过 pymssql 从与链接服务器通信的 python 脚本执行存储过程。 SP 在手动运行时工作,但从 python 脚本运行时出错: (7391, 'The operation cou
根据 Python DB API,cursor.description 中的一个字段返回一个 type_code;然而,这些总是数字。如何从 type_code(例如 1)转换为数据类型(例如 TEX
我正在使用 pymsqsql 库从 Python 程序调用极其简单的查询。 with self.conn.cursor() as cursor: cursor.execute('selec
我是一名优秀的程序员,十分优秀!