File: database.doc

package info (click to toggle)
qdjango 0.6.2-3.3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 908 kB
  • sloc: cpp: 7,818; sh: 32; makefile: 12; javascript: 1
file content (76 lines) | stat: -rw-r--r-- 2,634 bytes parent folder | download | duplicates (3)
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
/*
 * Copyright (C) 2010-2015 Jeremy Lainé
 * Contact: https://github.com/jlaine/qdjango
 *
 * This file is part of the QDjango Library.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 */

/*!

\defgroup Database

\brief Object Relation Mapper (ORM)

QDjango's Object Relation Mapper (ORM) strives to be both powerful
and simple to use. Where possible it tries to follow django's
ORM API, with a similar lazy queryset mechanism.

The object relation mapper builds upon <a href="http://doc.qt.io/qt-5/metaobjects.html">Qt's Meta-Object System</a>,
so if you are familiar with Qt, you should feel right at home. Features include:

\li support for a wide range of database backends thanks to <a href="http://doc.qt.io/qt-5/qtsql-module.html">QtSql</a>
\li <a href="models.html">creating and registering database models</a> is easy using Qt's property system
\li <a href="queries.html">performing queries using querysets</a>
\li QDjango can <a href="database.html">create and drop database tables and indices</a> for registered models
\li thread-aware access to the database

\page database Database configuration

\section setup Setting the database

The first step is to open the database using
<a href="http://doc.qt.io/qt-5/qsqldatabase.html#addDatabase">QSqlDatabase::addDatabase()</a>,
for instance for an in-memory SQLite database:

\code
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
db.open();
\endcode

You should now tell QDjango to use the database you just opened:

\code
QDjango::setDatabase(db);
\endcode

\section creating Creating or dropping database tables

Once you have set the database and declared all your models (see \ref models), you can ask QDjango to create
the database tables for all models:

\code
QDjango::createTables();
\endcode

Conversely, you can ask QDjango to drop the database tables for all models:

\code
QDjango::dropTables();
\endcode

\section threading Threading support

Internally, QDjango calls the QDjango::database() method whenever it needs a handle to the database. This method will clone the database connection as needed if it is invoked from a different thread.

*/