2012-05-02 123 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