【问题标题】:How to get data out of a postgres bytea column into a python variable using sqlalchemy?如何使用 sqlalchemy 从 postgres bytea 列中获取数据到 python 变量中?
【发布时间】:2017-06-05 06:14:19
【问题描述】:

我正在使用下面的脚本。 如果我更改脚本以避免使用 bytea 数据类型,我可以轻松地将数据从我的 postgres 表复制到 python 变量中。

但是如果数据在 bytea postgres 列中,我会遇到一个叫做内存的奇怪对象,这让我很困惑。

这是我针对 anaconda python 3.5.2 运行的脚本:

# bytea.py

import sqlalchemy

# I should create a conn
db_s = 'postgres://dan:dan@127.0.0.1/dan'
conn = sqlalchemy.create_engine(db_s).connect()

sql_s = "drop table if exists dropme"
conn.execute(sql_s)

sql_s = "create table dropme(c1 bytea)"
conn.execute(sql_s)

sql_s = "insert into dropme(c1)values( cast('hello' AS bytea) );"
conn.execute(sql_s)

sql_s = "select c1 from dropme limit 1"
result = conn.execute(sql_s)
print(result)
# <sqlalchemy.engine.result.ResultProxy object at 0x7fcbccdade80>

for row in result:
    print(row['c1'])

# <memory at 0x7f4c125a6c48>

如何获取内存中0x7f4c125a6c48处的数据?

【问题讨论】:

  • 试试select c1::text,convert_from(c1, 'UTF8') from dropme limit 1

标签: postgresql sqlalchemy bytea


【解决方案1】:

您可以使用 python bytes() 投射它

for row in result:
    print(bytes(row['c1']))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    相关资源
    最近更新 更多