我正在使用sqlalchemy从MSSQL Server 2005中提取数据。我有一个表,其中包含一个包含0x0000000000881C3C, 0x0000000000881C3D, 0x0000000000881C3E, 0x0000000000881C3F
等值的列。
列类型是时间戳。我使用反射来检查列类型,并且sqlalchemy正确地确定了列类型。但是,当我使用查询提取数据时,返回的数据类型是bytearray。
对于具有以下值的源行:
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
答案 0 :(得分:1)
有没有办法可以强制sqlalchemy将该列视为一个 字符串?
将autoload
和Columns
合并到override reflected columns:
...
from sqlalchemy.types import Unicode
opp_table = Table('MYTABLE', metadata,
Column('your_column_name', Unicode(30)),
autoload=True,
autoload_with=engine)