【问题标题】:connecting to SQLite with python 2.6, pandas and SqlAlhemy — mission impossibe?使用 python 2.6、pandas 和 SqlAlchemy 连接到 SQLite — 不可能完成的任务?
【发布时间】:2016-06-17 08:31:06
【问题描述】:

我正在尝试在我学校的机器集群上部署地理空间联合脚本。不幸的是,他们有 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.

我该如何解决这个问题?

【问题讨论】:

    标签: python sqlite pandas sqlalchemy python-2.6


    【解决方案1】:

    你不能像这样嵌套上下文管理器吗:

    with engine.connect() as conn:
        with conn.begin():
            chunks = ...
    

    在 2.7 中为多个上下文管理器添加了语法,没错,但您始终可以在 2.6 中解决它。

    【讨论】:

    • 好点,但它也打印“'Connection'对象没有属性'exit'”,在这种情况下,所以我不能
    • @Casy_fill 我认为这意味着您使用的是 SQLAlchemy 的旧版本(即 Connection 对象就有了 __exit__ 函数。尝试升级您的 SQLAlchemy?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 2021-07-28
    • 2012-03-02
    • 2021-01-29
    • 2010-10-04
    • 1970-01-01
    相关资源
    最近更新 更多