如何使用sqlalchemy将postgres bytea列中的数据转换为python变量?

时间:2017-01-20 09:49:14

标签: postgresql sqlalchemy bytea

我正在使用下面的脚本。 如果我更改脚本以避免使用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?

1 个答案:

答案 0 :(得分:1)

您可以使用python bytes()

进行投射
for row in result:
    print(bytes(row['c1']))