दुर्भाग्य से कोई रास्ता नहीं अभी स्थापित करने के लिए है की तरह एक सूची पारित कर सकते हैं पांडा df.to_sql() विधि में एक प्राथमिक कुंजी। इसके अतिरिक्त, केवल चीजों को और अधिक दर्द बनाने के लिए तालिका बनाने के बाद स्क्लाइट में कॉलम पर प्राथमिक कुंजी सेट करने का कोई तरीका नहीं है।
हालांकि, फिलहाल एक काम pqas df.to_sql() विधि के साथ स्क्लाइट में तालिका बनाने के लिए है। फिर आप एक डुप्लिकेट टेबल बना सकते हैं और अपना डेटा कुंजी कॉपी करके अपना प्राथमिक कुंजी सेट कर सकते हैं। फिर अपनी पुरानी टेबल को साफ करने के लिए छोड़ दें।
यह इस के साथ कुछ होगा।
import pandas as pd
import sqlite3
df = pd.read_csv("/Users/data/" +filename)
columns = df.columns columns = [i.replace(' ', '_') for i in columns]
#write the pandas dataframe to a sqlite table
df.columns = columns
df.to_sql(name,con,flavor='sqlite',schema=None,if_exists='replace',index=True,index_label=None, chunksize=None, dtype=None)
#connect to the database
conn = sqlite3.connect('database')
c = conn.curser()
c.executescript('''
PRAGMA foreign_keys=off;
BEGIN TRANSACTION;
ALTER TABLE table RENAME TO old_table;
/*create a new table with the same column names and types while
defining a primary key for the desired column*/
CREATE TABLE new_table (col_1 TEXT PRIMARY KEY NOT NULL,
col_2 TEXT);
INSERT INTO new_table SELECT * FROM old_table;
DROP TABLE old_table;
COMMIT TRANSACTION;
PRAGMA foreign_keys=on;''')
#close out the connection
c.close()
conn.close()
अतीत में मैंने ऐसा किया है क्योंकि मुझे इस मुद्दे का सामना करना पड़ा है। बस इसे और अधिक सुविधाजनक बनाने के लिए पूरी चीज को एक समारोह के रूप में लपेट लिया ...
स्क्लाइट के साथ मेरे सीमित अनुभव में मैंने पाया है कि तालिका बनाने के बाद प्राथमिक कुंजी जोड़ने में सक्षम नहीं है, प्रदर्शन करने में सक्षम नहीं है इन्सर्ट या यूपीएसईआरटी अपडेट करें, और अद्यतन जॉइन ने बहुत निराशा और कुछ अपरंपरागत कामकाज का कारण बना दिया है।
आखिरकार, पांडा df.to_sql() विधि में एक dtype कीवर्ड तर्क है जो कॉलम नामों का एक शब्दकोश ले सकता है: प्रकार। आईई: dtype = {col_1: टेक्स्ट}
स्रोत
2017-01-28 05:12:53