2010-04-21 13 views
7

मेरे पास एक पिलोन प्रोजेक्ट और एक स्क्लाक्लेमी मॉडल है जो स्कीमा योग्य टेबल लागू करता है:स्कीमा एसक्यूएलकेमी, एसक्यूएलसाइट और पोस्टग्रेस्क्ल के साथ योग्य टेबल?

class Hockey(Base): 
    __tablename__ = "hockey" 
    __table_args__ = {'schema':'winter'} 
    hockey_id = sa.Column(sa.types.Integer, sa.Sequence('score_id_seq', optional=True), primary_key=True) 
    baseball_id = sa.Column(sa.types.Integer, sa.ForeignKey('summer.baseball.baseball_id')) 

यह कोड पोस्टग्रेस्क्ल के साथ बहुत अच्छा काम करता है लेकिन तालिका और विदेशी कुंजी नामों पर SQLite का उपयोग करते समय विफल रहता है (SQLite की स्कीमा समर्थन की कमी के कारण)

sqlalchemy.exc.OperationalError: (OperationalError) अज्ञात डेटाबेस "सर्दी" 'PRAGMA "सर्दियों" .table_info ("हॉकी")'()

मैं dev और test के लिए SQLite का उपयोग करना जारी रखना चाहता हूं।

क्या SQLite पर यह असफल रूप से विफल होने का कोई तरीका है?

+2

आपके देव और परीक्षण मशीनों पर पोस्टग्रेस के साथ आपके पास क्या कठिनाइयां हैं? –

+4

मैं आपके सेटअप को सरल बना दूंगा।पोस्टग्रेस का अंत से अंत तक उपयोग करें। SQLIte पर परीक्षण न करें और पोस्टग्रेज़ पर रिलीज़ करें। – Kuberchaun

+1

SQLite के साथ चिपकने वाला एक आसान वर्कफ़्लो बनाता है, खासकर क्यूए लोगों के लिए क्योंकि उन्हें अपने परीक्षण डीबी के बारे में पता नहीं होना चाहिए। बस पोस्टग्रेस के साथ बस जाकर एक ठोस योजना "बी" –

उत्तर

11

I'd like to continue using SQLite for dev and testing.

Is there a way of have this fail gracefully on SQLite?

यह जानना मुश्किल है कि इस तरह के प्रश्न से कहां से शुरुआत करना है। इसलिए । । ।

इसे रोकें। यह काम ना करें।

कुछ ऐसे डेवलपर्स हैं जिनके पास अपने लक्षित प्लेटफॉर्म पर विकास की लक्जरी नहीं है। उनका जीवन एक कठिन एक चल रहा कोड (और कभी-कभी कंपाइलर) एक पर्यावरण से दूसरे में, दो बार डिबगिंग (कभी-कभी लक्ष्य प्लेटफॉर्म पर दूरस्थ रूप से डीबग करना पड़ता है), धीरे-धीरे जागरूकता में आ रहा है कि उनके आंत में पिघलने वास्तव में है एक अल्सर की शुरुआत।

पोस्टग्रेएसक्यूएल स्थापित करें।

आप विकास, परीक्षण, और तैनाती के लिए एक ही डाटाबेस वातावरण का उपयोग कर सकते हैं, तो आप चाहिए

क्यूए टीम का उल्लेख नहीं करना। धरती पर क्यों वे सामानों का परीक्षण कर रहे हैं जो वे जहाज नहीं जा रहे हैं? यदि आप PostgreSQL पर तैनाती कर रहे हैं, तो PostgreSQL पर अपने काम की गुणवत्ता को आश्वस्त करें।

गंभीरता से।

+0

मेरा संपादन एक नए उत्तर के रूप में आया। इस जवाब में मेरा पूरा पाठ है। दूसरे को क्यूए के सभी अच्छे लोगों के लिए मेरी विशिष्ट चिंता याद आ रही है। –

+0

यदि कोई सर्वर जो हर कोई विकास और परीक्षण के लिए उपयोग कर सकता है, तो सभी मशीनों पर स्थानीय रूप से पोस्टग्रेएसक्यूएल स्थापित किया जा सकता है। यह परीक्षकों का बोझ आसान होगा क्योंकि उन्हें इसे स्थापित करने की आवश्यकता नहीं होगी। – jpmc26

2

मैं सिर्फ एक शुरुआत अपने आप को कर रहा हूँ, और मैं Pylons उपयोग नहीं किया है, लेकिन ...

मैं ध्यान दें कि आप तालिका और संबद्ध वर्ग एक साथ संयोजन कर रहे हैं। अगर आप उन्हें अलग करते हैं तो कैसे?

import sqlalchemy as sa 
meta = sa.MetaData('sqlite:///tutorial.sqlite') 
schema = None 
hockey_table = sa.Table('hockey', meta, 
         sa.Column('score_id', sa.types.Integer, sa.Sequence('score_id_seq', optional=True), primary_key=True), 
         sa.Column('baseball_id', sa.types.Integer, sa.ForeignKey('summer.baseball.baseball_id')), 
         schema = schema, 
        ) 

meta.create_all() 

तो फिर तुम बना सकते हैं एक अलग

class Hockey(Object): 
    ... 

और

mapper(Hockey, hockey_table) 

तो बस सेट स्कीमा = हर जगह कोई नहीं ऊपर अगर आप SQLite का उपयोग कर रहे हैं, और मूल्य (रों) आप चाहते हैं अन्यथा।

आपके पास कोई कामकाजी उदाहरण नहीं है, इसलिए ऊपर दिया गया उदाहरण एक कामकाजी नहीं है। हालांकि, जैसा कि अन्य लोगों ने इंगित किया है, डेटाबेस में पोर्टेबिलिटी बनाए रखने की कोशिश अंत में हारने वाला गेम है। मैं लोगों को +1 जोड़ दूंगा कि आप बस पोस्टग्रेएसक्यूएल का हर जगह उपयोग करें।

एचटीएच, सम्मान।

+0

उन लोगों के बारे में क्या है जिनके पास एमएसएसक्यूएल (विंडोज उत्पाद) का उपयोग करने की सहयोग नीति है जबकि ऐप विकास लिनक्स पक्ष पर होता है? हालांकि PostgreSQL का उपयोग करने के लिए वास्तव में अच्छा होगा, वर्तमान डेटा पर मौजूद डेटा की मात्रा के बाद, माइग्रेशन भविष्य में बहुत दूर है। – Thornhale

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