使用 python 2.6、pandas 和 SqlAlchemy 连接到 SQLite——不可能完成的任务?
connecting to SQLite with python 2.6, pandas and SqlAlhemy — mission impossibe?
我正在尝试在我学校的机器集群上部署地理空间联合脚本。不幸的是,他们有 python 2.6(Cloudera 的标准),我必须相应地重新编写代码。
读取 pandas.from_sql() 需要建立 SQLAlchemy 连接。但是,他们提出的方式在 python 2.6 中不起作用:
engine = create_engine('sqlite:///%s' % path)
with engine.connect() as conn, conn.begin():
chunks = pd.read_sql_table('tweets', conn, columns=columns, chunksize=50)
不过,python 2.6好像不喜欢'with'的说法,也不喜欢'with ... as ... , ... :'。所以我不得不稍微修改一下代码:
conn = engine.connect()
conn.begin()
chunks = pd.read_sql_table('tweets', conn, columns=columns, chunksize=50)
conn.close()
然而,这又给我带来了另一个错误,一个很奇怪的错误:
raise NotImplementedError("read_sql_table only supported for "
NotImplementedError: read_sql_table only supported for SQLAlchemy connectable.
我该如何解决这个问题?
你不能像这样嵌套上下文管理器吗:
with engine.connect() as conn:
with conn.begin():
chunks = ...
在 2.7 中为多个上下文管理器添加了语法,是的,但您始终可以在 2.6 中解决它。
我正在尝试在我学校的机器集群上部署地理空间联合脚本。不幸的是,他们有 python 2.6(Cloudera 的标准),我必须相应地重新编写代码。
读取 pandas.from_sql() 需要建立 SQLAlchemy 连接。但是,他们提出的方式在 python 2.6 中不起作用:
engine = create_engine('sqlite:///%s' % path)
with engine.connect() as conn, conn.begin():
chunks = pd.read_sql_table('tweets', conn, columns=columns, chunksize=50)
不过,python 2.6好像不喜欢'with'的说法,也不喜欢'with ... as ... , ... :'。所以我不得不稍微修改一下代码:
conn = engine.connect()
conn.begin()
chunks = pd.read_sql_table('tweets', conn, columns=columns, chunksize=50)
conn.close()
然而,这又给我带来了另一个错误,一个很奇怪的错误:
raise NotImplementedError("read_sql_table only supported for "
NotImplementedError: read_sql_table only supported for SQLAlchemy connectable.
我该如何解决这个问题?
你不能像这样嵌套上下文管理器吗:
with engine.connect() as conn:
with conn.begin():
chunks = ...
在 2.7 中为多个上下文管理器添加了语法,是的,但您始终可以在 2.6 中解决它。