forked from mattmakai/fullstackpython.com
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabase.html
More file actions
111 lines (101 loc) · 5.33 KB
/
database.html
File metadata and controls
111 lines (101 loc) · 5.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<!doctype html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]-->
<!--[if gt IE 8]><!-->
<html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="language" content="English" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Full Stack Python</title>
<meta name="description" content="Full stack Python shows how an entire Python web application is built, from the server to the front end JavaScript.">
<meta name="author" content="Matt Makai">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="/css/c.css" />
<link rel="stylesheet" href="/css/bootstrap-responsive.min.css" />
<script src="/js/modernizr-2.0.6.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-19910497-7']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<a href="https://github.com/makaimc/fullstackpython.github.com" class="github">
<img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" />
</a>
<div class="container">
<div class="row">
<div class="span12">
<div class="logo-header-section">
<a href="/"><img src="../img/full-stack-python-logo-bw.png" height="42" width="42" class="logo-image" /></a>
<span class="logo-title"><a href="/">Full Stack Python</a></span>
</div>
</div>
</div>
<h1>Database</h1>
<p>A database is an abstraction on top of an operating system's file system to
ease creating, reading, updating, and deleting persistent data. The
database storage abstraction most commonly used in Python web development is
sets of relational tables. Alternative storage abstractions are explained in
the NoSQL section.</p>
<p>Relational databases store all data in a series of tables. Interconnections
between the tables are specified as <em>foreign keys</em>.</p>
<p>Databases storage implementations vary in complexity. SQLite, a database
included with Python, creates a single file for all data per database.
Other databases such as Oracle, PostgreSQL, and MySQL have more complicated
persistence schemes while offering additional advanced features that are
useful for web application data storage.</p>
<p><a class="reference external" href="http://www.postgresql.org/">PostgreSQL</a> and
<a class="reference external" href="http://www.mysql.com/">MySQL</a> are two of the most common open source
databases.</p>
<p><a class="reference external" href="http://www.sqlite.org/">SQLite</a> is a database that is stored in a single
file on disk. SQLite is built into Python but is only built for access
by a single connection at a time.</p>
<div class="section" id="database-third-party-services">
<h2>Database third-party services</h2>
<p>Numerous companies run scalable database servers as a hosted service.
Depending on the provider, there can be several advantages to using a
hosted database third-party service:</p>
<ol class="arabic simple">
<li>automated backups and recovery</li>
<li>tightened security configurations</li>
<li>easy vertical scaling</li>
</ol>
<p><a class="reference external" href="http://aws.amazon.com/rds/">Amazon Relational Database Service (RDS)</a>
provides pre-configured MySQL and PostgreSQL instances. The instances can
be scaled to larger or smaller configurations based on storage and performance
needs.</p>
</div>
<div class="section" id="database-connections-with-python">
<h2>Database connections with Python</h2>
<p>To work with a relational database using Python, you need to use a code
library. The most common libraries for relational databases are:</p>
<p><a class="reference external" href="http://initd.org/psycopg/">psycopg2</a> for PostgreSQL</p>
<p><a class="reference external" href="https://pypi.python.org/pypi/MySQL-python/1.2.4">MySQLdb</a> for MySQL</p>
<p><a class="reference external" href="http://cx-oracle.sourceforge.net/">cx_Oracle</a> for Oracle</p>
<p>SQLite support is built into Python 2.7+ and therefore a separate library
is not necessary.</p>
</div>
<div class="section" id="database-resources">
<h2>Database resources</h2>
<p><a class="reference external" href="http://db-engines.com/en/ranking">DB-Engines</a> ranks the most popular
database management systems.</p>
<p><a class="reference external" href="http://postgresweekly.com/">PostgreSQL Weekly</a> is a weekly newsletter of
PostgreSQL content from around the web.</p>
</div>
<hr/>
<div class="footer pull-right">
<a href="http://www.mattmakai.com/" class="underline">Matt Makai</a> 2013
</div>
</div>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="/js/bootstrap.min.js"></script>
</body>
</html>