Size: 2251
Comment:
|
Size: 3349
Comment: Rearranged similar to the PostgreSQL page.
|
Deletions are marked like this. | Additions are marked like this. |
Line 2: | Line 2: |
[[TableOfContents]] | |
Line 4: | Line 3: |
== Masthead == | = SQLite = |
Line 6: | Line 5: |
URL:: http://sqlite.org/ licence:: Sources are uncopyrighted. Use for any purpose. platforms:: Built and tested under Linux and Win2K. |
URL:: http://sqlite.org/ licence:: Sources are uncopyrighted. Use for any purpose. platforms:: Built and tested under Linux and Win2K. == Pros == I think SQLite may be a good replacement for gadfly, because: * The main engine is written in C, so it should be faster than the gadfly implementation in Python * It's extensible in a very easy way via Python * It doesn't put all data in memory like gadfly does (yet you can do that if you want, just use ':memory:' as filename * It's very cool for small databased application, because you do not have to start an external DBMS * Implements almost all of SQL92 == Cons == * SQLite only supports the basic types NULL, INTEGER, FLOAT, TEXT and BLOB * If you want to use other types like DATE and TIME in pysqlite, you need to use its "pysqlite types mode", where things can get a little nastier. ---- |
Line 14: | Line 30: |
URL:: http://pysqlite.org/ SourceForge:: http://sourceforge.net/projects/pysqlite licence:: zlib/libpng License platforms:: Windows 95/98/2000/XP, POSIX, MacOS X Python versions:: 2.1 or later (1.x branch)/2.3 or later (2.0 branch). Included in Python 2.5. |
URL:: http://pysqlite.org/ SourceForge:: http://sourceforge.net/projects/pysqlite licence:: zlib/libpng License platforms:: Windows 95/98/2000/XP, POSIX, MacOS X Python versions:: 2.1 or later (1.x branch)/2.3 or later (2.0 branch). Included in Python 2.5. |
Line 22: | Line 38: |
* Extensible type conversion * Factories for connection and cursor objects * row converter factory to easily and efficiently switch to a nonstandard type for rows (e. g. dicts) * User-defined functions and aggregates ==== Comments ==== |
* Extensible type conversion * Factories for connection and cursor objects * row converter factory to easily and efficiently switch to a nonstandard type for rows (e. g. dicts) * User-defined functions and aggregates |
Line 33: | Line 47: |
URL:: http://www.rogerbinns.com/apsw.html licence:: zlib/libpng license platforms:: Windows, POSIX Python versions:: ? |
URL:: http://www.rogerbinns.com/apsw.html licence:: zlib/libpng license platforms:: Windows, POSIX Python versions:: ? |
Line 42: | Line 56: |
==== Comments ==== | ---- |
Line 54: | Line 68: |
== Pros == | == Usage Notes == The following solution was difficult to discover with the available documentation (http://pysqlite.org/ was unavailable). If this page can be found by others searching for answers, it may save many hours of frustration. |
Line 56: | Line 71: |
I think SQLite may be a good replacement for gadfly, because: | === Id of Most Recent Row === After creating a new row in a table that uses AUTOINCREMENT to create the PRIMARY KEY, one may wish to determine the value of the new row-id, for example if the value is need for a new row in a related table that will be inserted next. The answer is to use the ''lastrowid'' property of the ''cursor'' class as in {{{newId=c.lastrowid }}} shown below in a demo context. Tested in Python2.5.1 with the sqlite3 module: |
Line 58: | Line 74: |
* the main engine is written in C, so it should be faster than the gadfly implementation in Python * it's extensible in a very easy way via Python * it doesn't put all data in memory like gadfly does (yet you can do that if you want, just use ':memory:' as filename * It's very cool for small databased application, because you do not have to start an external DBMS * Implements almost all of SQL92 |
{{{ import sqlite3 con = sqlite3.connect('demo.db') con.execute("""CREATE TABLE tbl ( id INTEGER PRIMARY KEY AUTOINCREMENT, grp INTEGER)""") c = con.cursor() c.execute("""INSERT INTO tbl (grp) VALUES (0);""") |
Line 64: | Line 83: |
== Cons == | newId = c.lastrowid |
Line 66: | Line 85: |
* SQLite only supports the basic types NULL, INTEGER, FLOAT, TEXT and BLOB * If you want to use other types like DATE and TIME in pysqlite, you need to use its "pysqlite types mode", where things can get a little nastier. |
print "New rowid =", newId c.close() con.close() }}} The result is printed:{{{ New rowid = 1}}} |
SQLite
- URL
- licence
- Sources are uncopyrighted. Use for any purpose.
- platforms
- Built and tested under Linux and Win2K.
Pros
I think SQLite may be a good replacement for gadfly, because:
- The main engine is written in C, so it should be faster than the gadfly implementation in Python
- It's extensible in a very easy way via Python
- It doesn't put all data in memory like gadfly does (yet you can do that if you want, just use ':memory:' as filename
- It's very cool for small databased application, because you do not have to start an external DBMS
- Implements almost all of SQL92
Cons
- SQLite only supports the basic types NULL, INTEGER, FLOAT, TEXT and BLOB
- If you want to use other types like DATE and TIME in pysqlite, you need to use its "pysqlite types mode", where things can get a little nastier.
DB API 2.0 Drivers
pysqlite
- URL
- SourceForge
- licence
- zlib/libpng License
- platforms
- Windows 95/98/2000/XP, POSIX, MacOS X
- Python versions
- 2.1 or later (1.x branch)/2.3 or later (2.0 branch). Included in Python 2.5.
Extensions to DB API
- Extensible type conversion
- Factories for connection and cursor objects
- row converter factory to easily and efficiently switch to a nonstandard type for rows (e. g. dicts)
- User-defined functions and aggregates
Other Drivers
APSW
- URL
- licence
- zlib/libpng license
- platforms
- Windows, POSIX
- Python versions
- ?
Programming Model
APSW is a SQLite 3 wrapper that provides a thin layer over SQLite 3. Although APSW looks vaguely similar to the DBAPI, it is not compliant with that API and instead mirrors the way SQLite 3 works.
Supported Python Applications
- Thuban (GIS application)
- Roundup (issue tracker)
- PyPI (Python Package Index)
- Trac (issue tracker, wiki, Subversion web frontend)
- Cloud Wiki (wiki)
- Supybot (IRC bot framework)
PyAddbook (Address Book)
Usage Notes
The following solution was difficult to discover with the available documentation (http://pysqlite.org/ was unavailable). If this page can be found by others searching for answers, it may save many hours of frustration.
Id of Most Recent Row
After creating a new row in a table that uses AUTOINCREMENT to create the PRIMARY KEY, one may wish to determine the value of the new row-id, for example if the value is need for a new row in a related table that will be inserted next. The answer is to use the lastrowid property of the cursor class as in newId=c.lastrowid shown below in a demo context. Tested in Python2.5.1 with the sqlite3 module:
import sqlite3 con = sqlite3.connect('demo.db') con.execute("""CREATE TABLE tbl ( id INTEGER PRIMARY KEY AUTOINCREMENT, grp INTEGER)""") c = con.cursor() c.execute("""INSERT INTO tbl (grp) VALUES (0);""") newId = c.lastrowid print "New rowid =", newId c.close() con.close()
The result is printed: New rowid = 1