2012-05-02 83 views
2

我在Sybase数据库上有sqlalchemy ORM映射。我的一些表名都相当长,我收到以下错误:sqlalchemy中的列别名太长/ Sybase ASE

DBAPIError: (Error) ('HY000', "[HY000] [DataDirect][ODBC Sybase Wire Protocol driver] 
[SQL Server]The column heading that starts with 'RISK_AGGREGATION_GROUP_id_risk_agg' is 
too long. Maximum length is 30. 

有什么办法我可以:

一)“或者”内SQLAlchemy的表,以便它使用更短列别名

二)增加30个字符的限制

我知道我可以创建视图的数据库内,但宁可不动它。

谢谢

+0

什么版本的sybase是这样的? docs说255是列,表格,用户定义标识符的最大长度:http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.sqlug/html/sqlug /sqlug12.htm – zzzeek

回答

0

我刚刚可以回答有关b)部分。 在sybase中,您不能增加字符数限制!

关于a)我不知道这是否可能,但我的理解是让你改变表名!

+0

好吧,看起来我需要在Sybase中创建视图,然后... – nickos556

+0

是的,如果您更改表(添加/删除列),您可能需要刷新这些视图 – van

1

SQLAlchemy的通常自动设置适合的标签长度​​,在Sybase的情况下,我们从来没有对这个方言的任何反馈,因此我们不必每SYBASE默认插入,但它通过label_length是配置:

engine = create_engine("sybase+pyodbc://...", label_length=30) 
+0

真棒@zzzeek谢谢你。比添加视图好得多:) – nickos556