आदि का उपयोग डंप मैं SQLite के इंटरैक्टिव खोल आदेशों के समकक्ष लाने के लिए एक तरह से नहीं मिल सकता है:तालिकाओं की सूची, डाटाबेस स्कीमा, किसी कारण से अजगर sqlite3 एपीआई
.tables
.dump
अजगर sqlite3 एपीआई का उपयोग कर।
क्या ऐसा कुछ भी है?
आदि का उपयोग डंप मैं SQLite के इंटरैक्टिव खोल आदेशों के समकक्ष लाने के लिए एक तरह से नहीं मिल सकता है:तालिकाओं की सूची, डाटाबेस स्कीमा, किसी कारण से अजगर sqlite3 एपीआई
.tables
.dump
अजगर sqlite3 एपीआई का उपयोग कर।
क्या ऐसा कुछ भी है?
उपयोग कर सकते हैं आप SQLITE_MASTER तालिका पूछताछ की टेबल और स्कीमेता की सूची लाने कर सकते हैं:
sqlite> .tab
job snmptarget t1 t2 t3
sqlite> select name from sqlite_master where type = 'table';
job
t1
t2
snmptarget
t3
sqlite> .schema job
CREATE TABLE job (
id INTEGER PRIMARY KEY,
data VARCHAR
);
sqlite> select sql from sqlite_master where type = 'table' and name = 'job';
CREATE TABLE job (
id INTEGER PRIMARY KEY,
data VARCHAR
)
मैं अजगर एपीआई से परिचित नहीं हूँ लेकिन आप हमेशा
SELECT * FROM sqlite_master;
बाहर चेक here डंप के लिए ऐसा लगता है कि पुस्तकालय sqlite3 में एक डंप समारोह है। http://docs.python.org/dev/library/sqlite3.html
# Convert file existing_db.db to SQL dump file dump.sql
import sqlite3, os
con = sqlite3.connect('existing_db.db')
with open('dump.sql', 'w') as f:
for line in con.iterdump():
f.write('%s\n' % line)
मैं कोशिश कर रहा हूँ: आयात sqlite3 चोर = sqlite3.connect ("test.db") con.dump() यह विफल रहता है ... मैं – Angel
जाहिर अजगर 2.6 में शामिल sqlite3 के संस्करण इस क्षमता है। पांडा का उपयोग करके एक बहुत तेज़ तरीका है।
जाँच रखना इस के साथ सावधान रहें, यह प्रिंट होगा सब आपके टेबल में डेटा अगर वे INSERT में बयान के साथ आबादी वाले हैं! – RobinL
अजगर में:
con = sqlite3.connect('database.db')
cursor = con.cursor()
cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
print(cursor.fetchall())
मेरे अन्य answer से सावधान रहें
बहुत सारे झुकाव के बाद मुझे टेबल के लिए मेटाडेटा सूचीबद्ध करने के लिए sqlite docs पर एक बेहतर उत्तर मिला, यहां तक कि संलग्न डेटाबेस भी।
meta = cursor.execute("PRAGMA table_info('Job')")
for r in meta:
print r
मुख्य जानकारी table_info उपसर्ग करना है, संलग्नक हैंडल नाम के साथ my_table नहीं।
मुझे आपके द्वारा लिखे गए स्निपेट में बहुत सारी त्रुटियां मिलीं, और उदाहरण नहीं दिखतीं। या तो संदर्भित दस्तावेज़ों में या अन्य उदाहरणों में "db_alias"। अन्य उदाहरणों के संदर्भ में, मुझे लगता है कि आप इस लाइन को चाहते हैं, उदाहरण के लिए 'जॉब' तालिका: 'मेटा = कर्सर.एक्सक्यूट (" PRAGMA table_info ('job') ") 'और आपकी पहली पंक्ति बाकी से असंबंधित प्रतीत होती है। – nealmcb
मैं PHP में एक SQLite तालिका स्कीमा पार्सर को क्रियान्वित किया है, तो आप यहाँ जाँच कर सकते हैं:
$parser = new SqliteTableDefinitionParser;
$parser->parseColumnDefinitions('x INTEGER PRIMARY KEY, y DOUBLE, z DATETIME default \'2011-11-10\', name VARCHAR(100)');
आप इस परिभाषा पार्सर नीचे कोड की तरह परिभाषाओं पार्स करने के लिए उपयोग कर सकते हैं पायथन में ऐसा करने का तरीका पांडस (संस्करण 0.16 और ऊपर) का उपयोग कर रहा है।
एक तालिका डंप:
db = sqlite3.connect('database.db')
table = pd.read_sql_query("SELECT * from table_name", db)
table.to_csv(table_name + '.csv', index_label='index')
डंप सभी तालिकाओं:
import sqlite3
import pandas as pd
def to_csv():
db = sqlite3.connect('database.db')
cursor = db.cursor()
cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
tables = cursor.fetchall()
for table_name in tables:
table_name = table_name[0]
table = pd.read_sql_query("SELECT * from %s" % table_name, db)
table.to_csv(table_name + '.csv', index_label='index')
#!/usr/bin/env python
# -*- coding: utf-8 -*-
if __name__ == "__main__":
import sqlite3
dbname = './db/database.db'
try:
print "INITILIZATION..."
con = sqlite3.connect(dbname)
cursor = con.cursor()
cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
tables = cursor.fetchall()
for tbl in tables:
print "\n######## "+tbl[0]+" ########"
cursor.execute("SELECT * FROM "+tbl[0]+";")
rows = cursor.fetchall()
for row in rows:
print row
print(cursor.fetchall())
except KeyboardInterrupt:
print "\nClean Exit By user"
finally:
print "\nFinally"
यहाँ बाहर तालिका के नाम और उन तालिकाओं के लिए स्तंभ नाम मुद्रित करने के लिए एक संक्षिप्त और सरल अजगर कार्यक्रम है।
import sqlite3
db_filename = 'database.sqlite'
newline_indent = '\n '
db=sqlite3.connect(db_filename)
db.text_factory = str
cur = db.cursor()
result = cur.execute("SELECT name FROM sqlite_master WHERE type='table';").fetchall()
table_names = sorted(zip(*result)[0])
print "\ntables are:"+newline_indent+newline_indent.join(table_names)
for table_name in table_names:
result = cur.execute("PRAGMA table_info('%s')" % table_name).fetchall()
column_names = zip(*result)[1]
print ("\ncolumn names for %s:" % table_name)+newline_indent+(newline_indent.join(column_names))
db.close()
print "\nexiting."
मैं सुझाव देता हूं कि प्रश्न को गैर पायथन विशिष्ट में कुछ नाम दें क्योंकि उत्तर वास्तव में एसक्यूएल का उपयोग करने वाले इंटरफेस के लिए सार्वभौमिक है। – Unode
सच है, हालांकि मैं इसे पूछते समय एक अजगर एपीआई की उम्मीद कर रहा था। मैं सही नाम खोजने की कोशिश करूंगा। – noamtm
यदि sqlite3 कमांड प्रॉम्प्ट से टेबल दिखाना चाहते हैं, तो http://stackoverflow.com/questions/82875/how-do-i-list-the-tables-in-a-sqlite-database-file देखें। यदि पाइथन पैकेज sqlite3 का उपयोग करते हैं, तो यहां दाऊद टैगहावी-नेजाद का जवाब देखें।मेरा सुझाव है कि ओपी पाइथन को प्रश्न शीर्षक में वापस जोड़ दें और दाऊद के जवाब का चयन करें। मुझे यह पृष्ठ "शो टेबल पायथन एसक्लाइट 3" गुगल करके मिला है क्योंकि Google पुराने प्रश्न शीर्षक को जानता है। एसओ के भीतर खोजें यहां भूमि में असफल हो जाएंगी। पायथन कोण के बिना, जुड़े डुप्लिकेट प्रश्न 82875 को और भीड़ ज्ञान प्राप्त हुआ है। –