我想使用SQLAlchemy访问遗留的MSSQL数据库。通过基本的模式检查,我已经可以列出我感兴趣的表的列了。不幸的是,这些列名有时包含重音字母(例如,“Magánszemély”、“LevelezésiCímIrányítószám”)。你知道吗
我唯一的要求是能够查询这个数据库。你知道吗
我使用以下命令为您列出了一些数据库名称
def inspect_komplex_table():
table = Table('D_Allomanylista_Komplex_V', meta, autoload=True, autoload_with=engine)
return table
def get_columns():
keys = inspect_komplex_table().columns.keys()
keys.sort()
txt = '\n'.join(keys)
open('column_names.txt', 'w').write(txt.encode('utf8'))
这将在列中给出一个(长)列表_名称.txt包含行的文件:
...
JutÉrvKezd
KEZDET
KTVSZAM
KamaraiTagszám
Képviselők
Lejarat
LevelezésiCímIrányítószám
LevelezésiCímUtca
LevelezésiCímVáros
...
我试着先创建一个没有重音列的基本映射
class BiztositasokModel(object):
def __init__(self, UgyfKod):
self.ugyfelkod = UgyfKod
其中UgyfKod
是内省中的一列,但是
mapper(BiztositasokModel, inspect_komplex_table())
与UnicodeEncodeError
一起失败
有人能告诉我怎么处理这样的数据库吗?你知道吗
我设法找到了两个答案,一个使用声明性语法,另一个使用经典映射。你知道吗
两者都实现了一种将映射列的默认命名方案更改为Python对象属性的方法。你知道吗
经典的映射答案是:SQLAlchemy mapping table with non-ascii columns to class
答案使用声明性语法:http://docs.sqlalchemy.org/en/latest/orm/mapper_config.html#automating-column-naming-schemes-from-reflected-tables
相关问题 更多 >
编程相关推荐