python - 如何强制 sqlalchemy 将列视为字符串?

标签 python sqlalchemy

我正在使用 sqlalchemy 从 MSSQL Server 2005 中提取数据。我有一个表,其中有一列包含诸如 0x0000000000881C3C、0x0000000000881C3D、0x0000000000881C3E、0x0000000000881C3F 等值。

列类型是时间戳。我使用反射来检查列类型,列类型由 sqlalchemy 正确确定。但是,当我使用查询来提取数据时,返回的数据类型是字节数组。

对于具有以下值的源行:

0x0000000000881C3C,35,1880744, AR,2014-05-13 13:04:53.000, N, 106,  1B3448E8-4D2F-46A0-87B9-ED07411F1478, NULL, NULL

sqlalchemy返回的值如下:

(bytearray(b'\x00\x00\x00\x00\x00\x88\x1c<'), 35, 1880744, 'AR', datetime.datetime(2014, 5, 13, 13, 4, 53), 'N', 106, '1B3448E8-4D2F-46A0-87B9-ED07411F1478', None, None)

如何防止 0x0000000000881C3C 被解释为字节数组?有没有一种方法可以强制 sqlalchemy 将该列视为字符串?

当我尝试将上述值插入 MongoDB 时,我遇到了问题。我尝试使用解码和编码的各种组合,但似乎没有任何效果。我束手无策,非常感谢这方面的任何帮助。

这是我使用的代码:

engine = create_engine('mssql+pyodbc://my_uid:my_pwd@my_db')
metadata = MetaData()
conn = engine.connect()
opp_table = Table('MYTABLE', metadata, autoload=True, autoload_with=engine)
s = select([opp_table])
result = conn.execute(s)
for row in result.fetchall():
    print row

最佳答案

Is there a way that I can force sqlalchemy to treat that column as a string?

使用 autoloadColumns 合并到 override reflected columns :

...
from sqlalchemy.types import Unicode

opp_table = Table('MYTABLE', metadata, 
                  Column('your_column_name', Unicode(30)), 
                  autoload=True, 
                  autoload_with=engine)

关于python - 如何强制 sqlalchemy 将列视为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33938062/

相关文章:

python - 如何制作具有两个特定间隔的数组?

python - 使用 pandas.to_sql() 编写 datetime.datetime() 列

python - SqlAlchemy/mysql 可选Where子句

python - 如何在 Python/SQLAlchemy/Flask 中计算累积移动平均值

python - SQLAlchemy 加密列而不在检索时自动解密

python - 使用 Flask-SQLAlchemy 中的存储过程调用将 POST 方法发送到 SQL

python - 在 Python 中级联可选参数

python - 如何为 Django/Mezzanine 站点的管理员设置权限

python - 我如何添加一个显示在 pygame 屏幕上的正在运行的计时器

python - 如何递归替换嵌套字典键中的字符?