2010-06-18 10 views
7

तो मैं कुछ परिणाम जो मैं install मेज से है, इसलिए की तरह मिल गया है है:SQLAlchemy: एक और तालिका में एक प्रश्न के परिणामों सम्मिलित करना

install = metadata.tables['install'] 
results = session.query(install) #<sqlalchemy.orm.query.Query object> 

मैं में इन ही परिणाम सम्मिलित करना चाहते हैं install_archive तालिका।

मुझे पूरी तरह से यह सुनिश्चित नहीं है कि यह कैसे करें, क्योंकि मैं install-archive ऑब्जेक्ट को परिभाषित करके स्कीमा को डुप्लिकेट नहीं करना चाहता हूं और उसके बाद परिणामों को पार्स करना चाहता हूं। मेरा मानना ​​है कि मैं ओआरएम का उपयोग नहीं कर रहा हूं, क्योंकि मैं (क्या सही शब्द है?) को प्रतिबिंबित करता है और उन्हें पूछताछ करता हूं।

सभी ट्यूटोरियल जिन्हें मैं देख सकता हूं ओआरएम का उपयोग कर सकते हैं।

psudocode में यह कर रही है, की एक धीमी रास्ता, होगा:

for id in result.all(): 
    install_archive.insert(install(id)) 

अग्रिम धन्यवाद!

+0

अभ्यास का उद्देश्य क्या है में परिणाम है? – van

+0

वैन, मैं 'इंस्टॉल' टेबल पर कुछ सत्यापन करने का प्रयास कर रहा हूं, और केवल सत्यापित करने वाला सबसेट 'install_archive' तालिका में पास किया जा रहा है। मुझे यकीन है कि यह एक साधारण बात है "कुछ रिकॉर्ड एक टेबल से दूसरे में ले जाएं, लेकिन सभी नहीं" लेकिन मुझे दस्तावेज़ों में ऐसा करने का कोई तरीका नहीं दिख रहा है। मैं देख रहा हूँ। – 0atman

+0

क्या आप वाकई इसे पायथन (एसए का उपयोग करके) में करने की ज़रूरत है, और सीधे MySQL में नहीं? क्यूं कर? – van

उत्तर

0

आप ऐसा कुछ कर सकते हैं (SELECT को अपनी आवश्यकताओं के अनुसार बदलना)। बस सुनिश्चित करें कि दो तालिकाओं में एक ही संरचना है।

INSERT INTO `table1` (SELECT * FROM `table2`); 
+0

कच्चे एसक्यूएल के बिना आप यह कैसे करेंगे लेकिन एक स्क्लेक्लेमी अभिव्यक्ति के साथ? – Hadrien

+0

मुझे विश्वास नहीं है कि आप SQLAlchemy के साथ ऐसा कुछ कर सकते हैं। आप सभी डेटा का चयन कर सकते हैं, फिर लूप को दूसरी तालिका में डालकर डालेंगे, लेकिन यह बेहद अक्षम होगा। आपको वास्तव में "स्क्लेक्लेमी मार्ग" करने से कुछ भी हासिल नहीं होता है। इस तरह एक एसक्यूएल कथन पोर्टेबल पर्याप्त है। –

+0

मुझे नहीं लगता कि यह सवाल का जवाब है। –

5
install_archive \ 
.insert() \ 
.from_select(names=['col1', 'col2'], # array of column names that your query returns 
      select=session.query(install)) # your query or other select() object 

यह (PostgreSQL बोली)

INSERT INTO install_archive (col1, col2) 
SELECT install.col1, install.col2 
FROM install; 
संबंधित मुद्दे