2016-05-05 6 views
0

SqlAlchemyでは、すべてのテーブル列に対して変数を宣言します。しかし、私はcustomer$partner$nazivという名前のカラムを持つテーブルから読み込み、Pythonのような名前の変数を宣言することはできません。この問題を回避する方法はありますか?ここでSqlAlchemy:名前にドル記号を持つテーブル列を処理する

は、私が(明らかに動作していない)持っているものです。

class RfidSif(Base): 
"""""" 
__tablename__ = 'rfid_sif' 

id = Column(Integer, primary_key=True) 
customer    = Column(Integer) 
customer$partner$naziv = Column(String) 
rfid_id    = Column(String) 
rfid_name    = Column(String) 
rfid_group_name  = Column(String) 
rfid_comment   = Column(String) 
rfid_startdate   = Column(Date) 
rfid_enddate   = Column(Date) 
activity    = Column(SmallInteger) 
user_headless   = Column(Integer) 

#---------------------------------------------------------------------- 
def __init__(self, id, customer, customer$partner$naziv, rfid_id, rfid_name, rfid_group_name, rfid_comment, rfid_startdate, rfid_enddate, activity, user_headless): 
    """""" 
    self.id      = id 
    self.customer    = customer 
    self.customer$partner$naziv = customer$partner$naziv 
    self.rfid_id    = rfid_id 
    self.rfid_name    = rfid_name 
    self.rfid_group_name  = rfid_group_name 
    self.rfid_comment   = rfid_comment 
    self.rfid_startdate   = rfid_startdate 
    self.rfid_enddate   = rfid_enddate 
    self.activity    = activity 
    self.user_headless   = user_headless 

#---------------------------------------------------------------------- 
def __repr__(self): 
    """""" 
    return "<RfidSif - '%s': '%s' - '%s'>" % (self.id, self.rfid_id, self.name) 
+0

ちょうどfyi、文の整列はPEP8に違反しています(特に、それらのうちの1つが他のものよりはるかに長い場合、かなり醜いです) – ThiefMaster

+0

は今までPEP8について知りませんでした。しかし、その醜いにもかかわらず、私はそれがはるかに判読性が高いことがわかります。 – Alko

+1

問題は、現在のアライメントに合わないものを追加すると、非常にひどい差分が得られることです。 1行追加するのではなく、1行追加してさらに多くの行を変更します。そのため、変更を大幅に悪化させることになります。空のドキュメントストリングも追加しないでください。それらを省略して、それらの中に何かを書き込もうとしたら、それらを追加します(しかし、 '__repr__'はめったに必要ありません) – ThiefMaster

答えて

3

は、単に最初の引数として列名を指定し、別の属性名を使用します。また

customer_partner_naziv = Column('customer$partner$naziv', String) 

を、あなたはしないでください__init__ - デフォルトのコンストラクタはすべてのキーワード引数を受け入れます(とにかく手動でidを設定しないでください、通常はシリアル/オートインクリメントの列です)

+0

Excelent!迅速な返信をありがとうございました! – Alko

関連する問題