@@ -3535,14 +3535,21 @@ <h3>Static site generator resources</h3>
35353535</ li >
35363536</ ul >
35373537 < h1 > Jinja2</ h1 >
3538- < p > Jinja2 is a Python < a href ="/template-engines.html " > template engine </ a > used to create
3539- HTML, XML or other markup formats that are returned to the user via an
3540- HTTP response.</ p >
3538+ < p > < a href ="http://jinja.pocoo.org/docs/dev/ " > Jinja2 </ a > is a Python
3539+ < a href =" /template-engines.html " > template engine </ a > used to create HTML, XML or
3540+ other markup formats that are returned to the user via an HTTP response.</ p >
35413541< h2 > Why is Jinja2 useful?</ h2 >
35423542< p > Jinja2 is useful because it has consistent template tag syntax and the
35433543project is cleanly extracted as
35443544< a href ="https://github.com/mitsuhiko/jinja2 "> an independent open source project</ a > so
35453545it can be used a dependency by other code libraries.</ p >
3546+ < div class ="well see-also ">
3547+ Jinja2 is an implementation of the
3548+ < a href ="/template-engines.html "> template engines</ a > concept. Learn
3549+ more in the < a href ="/web-development.html "> web development</ a > chapter or
3550+ view the < a href ="/table-of-contents.html "> table of contents</ a > for all topics.
3551+ </ div >
3552+
35463553< p > Jinja2 strikes a thoughtful balance on the template engine spectrum where
35473554on one end you can embed arbitrary code in the templates and the other
35483555end a developer can code whatever she wants.</ p >
@@ -4381,6 +4388,11 @@ <h3>Django ORM resources</h3>
43814388 shows a simple example with code for how to use the migrations integrated
43824389 into Django 1.7.</ p >
43834390</ li >
4391+ < li >
4392+ < p > < a href ="https://www.isotoma.com/blog/2015/11/23/sorting-querysets-with-nulls-in-django/ "> Sorting querysets with NULLs in Django</ a >
4393+ shows what to do if you're struggling with the common issue of sorting
4394+ columns that contain NULL values.</ p >
4395+ </ li >
43844396</ ul >
43854397< h3 > SQLAlchemy resources</ h3 >
43864398< ul >
@@ -4474,6 +4486,7 @@ <h1>PostgreSQL</h1>
44744486pronounced "Poss-gres", is an open source
44754487< a href ="/databases.html "> relational database</ a > implementation frequently used by
44764488Python applications as a backed for data storage and retrieval.</ p >
4489+ < p > < img src ="/img/postgresql.jpg " width ="100% " alt ="PostgreSQL logo. " class ="technical-diagram " /> </ p >
44774490< h2 > How does PostgreSQL fit within the Python stack?</ h2 >
44784491< p > PostgreSQL is the default database choice for many Python developers,
44794492including the Django team when testing the
@@ -4651,6 +4664,13 @@ <h2>MySQL or PostgreSQL?</h2>
46514664< a href ="/postgresql.html "> PostgreSQL</ a > . However, PostgreSQL's design is often
46524665preferred by Python web developers, especially when data migrations are
46534666run as an application evolves.</ p >
4667+ < div class ="well see-also ">
4668+ PostgreSQL is an implementation of the
4669+ < a href ="/databases.html "> relational database</ a > concept. Learn
4670+ more in the < a href ="/data.html "> data</ a > chapter or view the
4671+ < a href ="/table-of-contents.html "> table of contents</ a > for all topics.
4672+ </ div >
4673+
46544674< h2 > What organizations use MySQL?</ h2 >
46554675< p > The database is deployed in production at some of the highest
46564676trafficked sites such as
@@ -4694,6 +4714,46 @@ <h3>MySQL resources</h3>
46944714 is a blog post about specific deficiencies in MySQL's implementation that
46954715 hinder its usage with Django's ORM.</ p >
46964716</ li >
4717+ </ ul >
4718+ < h1 > SQLite</ h1 >
4719+ < p > SQLite is an open source relational database included with the Python standard
4720+ library as of Python 2.5. The pysqlite database driver is also included with
4721+ the standard library so that no further external dependencies are required to
4722+ access a SQLite database from within Python applications.</ p >
4723+ < p > < img src ="/img/sqlite.jpg " width ="100% " alt ="SQLite logo. " class ="technical-diagram " /> </ p >
4724+ < div class ="well see-also ">
4725+ SQLite is an implementation of the
4726+ < a href ="/databases.html "> relational database</ a > concept. Learn
4727+ more in the < a href ="/data.html "> data</ a > chapter or view the
4728+ < a href ="/table-of-contents.html "> table of contents</ a > for all topics.
4729+ </ div >
4730+
4731+ < h3 > SQLite resources</ h3 >
4732+ < ul >
4733+ < li >
4734+ < p > < a href ="https://pymotw.com/2/sqlite3/ "> sqlite3 - embedded relational database</ a > is an
4735+ extensive tutorial showing many of the common create, read, update and delete
4736+ operations a developer would want to do with SQLite.</ p >
4737+ </ li >
4738+ < li >
4739+ < p > < a href ="http://charlesleifer.com/blog/my-list-of-python-and-sqlite-resources/ "> My list of SQLite resources</ a >
4740+ is a nice roundup of useful tools to use with SQLite and tutorials for
4741+ learning more about the database.</ p >
4742+ </ li >
4743+ < li >
4744+ < p > < a href ="http://charlesleifer.com/blog/extending-sqlite-with-python/ "> Extending SQLite with Python</ a >
4745+ uses the Peewee
4746+ < a href ="/object-relational-mappers-orms.html "> object-relational mapper (ORM)</ a >
4747+ to implement virtual tables and aggregates on top of SQLite.</ p >
4748+ </ li >
4749+ < li >
4750+ < p > < a href ="http://flask.pocoo.org/docs/0.10/patterns/sqlite3/ "> Using SQLite with Flask</ a >
4751+ explains how Flask code can directly query a SQLite database without an ORM.</ p >
4752+ </ li >
4753+ < li >
4754+ < p > < a href ="http://sqlitebrowser.org/ "> SQLite Browser</ a > is an open source graphical user
4755+ interface for working with SQLite.</ p >
4756+ </ li >
46974757</ ul >
46984758 < h1 > Application Programming Interfaces</ h1 >
46994759< p > Application programming interfaces (APIs) provide machine-readable
0 commit comments