2011-03-08 8 views
9

के साथ एसक्यूएल-कोड उत्पन्न करता है क्या मैं केवल SQL-Code उत्पन्न करने के लिए SQLAlchemy ORM-Mapper का उपयोग कर सकता हूं?(केवल) एसक्यूएलकेमी

TestUser = User("John", "Doe") 
print session.query(User) 

कैसे मैं सम्मिलित करें के लिए एसक्यूएल उत्पन्न कर सकते हैं /:

सरल टेबल मैं की तरह

print users_table.select() 
print users_table.insert() 
print users_table.update() 
print users_table.delete() 

कोड का उपयोग कर सकते लेकिन ORM के साथ मैं केवल चयन-कथन के लिए एक रास्ता मिल गया है के साथ

अद्यतन/हटाएं (वास्तव में डेटाबेस में हेरफेर किए बिना)?

धन्यवाद।

उत्तर

7

शायद आप ORM की बजाय SQLAlchemy कोर अभिव्यक्ति भाषा चाहते हैं?

http://www.sqlalchemy.org/docs/core/index.html

ORM बहुत कसकर डेटा-बाउंड, और इस तरह वास्तव में अपने DB सत्र से decoupled नहीं किया जा करने के लिए डिज़ाइन किया गया है। अभिव्यक्ति भाषा, दूसरी ओर, सीधे एसक्यूएल में अनुवाद किया जा सकता है। (बस जिसके परिणामस्वरूप वस्तुओं के किसी भी लेते हैं और उन्हें str() के पास है और आप बराबर एसक्यूएल प्राप्त होगा।)

3

आप sqlalchemy.orm.class_mapper समारोह के माध्यम से एक मैप की गई वर्ग के लिए तालिका वस्तुओं का उपयोग कर सकते हैं:


users_table = class_mapper(User).mapped_table 
users_table.insert(..) 

आप कथात्मक वाक्यविन्यास का उपयोग कर रहे हैं, तो आप ऐसा कर सकते हैं:


users_table = User.__table__ 
users_table.insert(..) 
3

यह आसान है। बस आप जो करते हैं, वैसे ही आप क्वेरी को

TestUser = User("John", "Doe") 
# convert querying object to string 
query_stat = str(session.query(User)) 
print query_stat 

और यहां, query_stat SQL क्वेरीिंग कथन होना चाहिए।

+0

यदि आप 'session.query (MyModel) .count()' करते हैं तो क्या होगा? –

संबंधित मुद्दे