posted on: 2008-09-05 07:52:28
This is the simplest...raw_input() based terminal, but I use it.

>I included a check for the ';' at the end to make me feel more like I am doing sql, but of course this terminal doesn't have all of the nifty sql terminal features such as scroll back.

A good reference is found at

http://www.sqlite.org/lang.html

#!/usr/bin/env python
from pysqlite2 import dbapi2 as sqlite
import sys
"""
dbkit.py

This is a small version of a program I use.  I have more macros
"""
def no(onecurse):
	return 0
def ShowTables(onecurse):
	onecurse.execute('SELECT name FROM SQLITE_MASTER where type=?',('table',))
	data = onecurse.fetchall()
	for item in data:
		print repr(item)

macros = {"t":ShowTables}
conn = sqlite.connect(sys.argv[1])
Cursed = conn.cursor()
test = 'start'
while test!='q':
	try:
		if test[-1]==';':
			Cursed.execute(test[:-1])
			data = Cursed.fetchall()
			for item in data:
				print repr(item)
		else:
			macros.get(test,no)(Cursed)
	except:
		print sys.exc_info()
	test = raw_input('>>')
conn.commit()

I've included a show tables macro since it is a bit more obscure than the standard. Note if the command line argument does not exist, it will create that table. I will probably create another post with usefull ... simple examples.

Such as

DESCRIBE [TABLENAME];

Can be used here as

PRAGMA table_info([TABLENAME]);

Comments

matt
2008-09-08 08:59:58
Here is the command for making it work like a terminal: <pre> import readline </pre> If you are in windows: <pre> import pyreadline </pre>
Name: