द्वारा एसक्लाइट तालिका में पांडस डेटाफ्रेम को जोड़ना मैं 'न्यूटेबल' नामक स्क्लाइट डेटाबेस में मौजूदा तालिका में पांडस डेटाफ्रेम को जोड़ना चाहता हूं। न्यूटेबल में तीन फ़ील्ड हैं (आईडी, नाम, आयु) और आईडी प्राथमिक कुंजी है। मेरे डेटाबेस कनेक्शन:प्राथमिक कुंजी
import sqlite3
DB='<path>'
conn = sqlite3.connect(DB)
dataframe मैं संलग्न करना चाहते हैं:
test=pd.DataFrame(columns=['ID','Name','Age'])
test.loc[0,:]='L1','John',17
test.loc[1,:]='L11','Joe',30
ऊपर उल्लेख किया है, आईडी NewTable में प्राथमिक कुंजी है। कुंजी 'एल 1' पहले से ही न्यूटेबल में है, लेकिन कुंजी 'एल 11' नहीं है। मैं डेटाटेम को न्यूटेबल में जोड़ने की कोशिश करता हूं।
from pandas.io import sql
sql.write_frame(test,name='NewTable',con=conn,if_exists='append')
यह एक त्रुटि फेंकता है:
IntegrityError: column ID is not unique
त्रुटि तथ्य यह है कि कुंजी 'एल 1' NewTable में पहले से ही है की संभावना है। डेटाफ्रेम में प्रविष्टियों में से कोई भी न्यूटेबल में शामिल नहीं है। लेकिन, मैं नई कुंजी के साथ डेटाफ्रेम को बिना किसी समस्या के न्यूटेबल में जोड़ सकता हूं।
क्या कोई आसान तरीका है (उदाहरण के लिए, लूपिंग के बिना) एक एसक्लाइट टेबल में पांडस डेटाफ्रेम जोड़ने के लिए, जैसे कि डेटाफ्रेम में नई कुंजियां संलग्न की गई हैं, लेकिन तालिका में पहले से मौजूद कुंजी नहीं हैं?
धन्यवाद।
क्या इसके लायक है, यदि आप पाते हैं अपने आप को इस एक बहुत कुछ कर के लिए, SQLAlchemy अजगर से एसक्यूएल के साथ बातचीत के लिए एक महान उपकरण है। यदि आप इसके साथ सेट अप करते हैं, तो session.merge (पंक्ति) फ़ंक्शन ठीक वही करेगा, एक पंक्ति को मौजूदा प्राथमिक कुंजी के साथ बदलकर अन्यथा जोड़ना। – RussellStewart
धन्यवाद। मैं sqlalchemy में देखेंगे। – lmart999