[pkg] change the build behavior
[pysqlcipher.git] / README.rst
1 pysqlcipher
2 ===========
3
4 This library is a fork of pysqlite.
5 It is still in beta state (although it's strongly used in development in some
6 linux environments). It links against against libsqlcipher.
7
8 Original code (c) 2004-2007 Gerhard Häring
9
10 Packaging for SQLCipher (c) 2013-2016 Kali Kaneko
11
12
13 Usage
14 -----
15 You have to pass the ``PRAGMA key`` before doing any operations::
16
17   from pysqlcipher import dbapi2 as sqlite
18   conn = sqlite.connect('test.db')
19   c = conn.cursor()
20   c.execute("PRAGMA key='test'")
21   c.execute('''create table stocks (date text, trans text, symbol text, qty real, price real)''')
22   c.execute("""insert into stocks values ('2006-01-05','BUY','RHAT',100,35.14)""")
23   conn.commit()
24   c.close()
25
26 You can quickly verify that your database file in indeed encrypted::
27
28   hexdump -C test.db                                                                                                        
29   ab 7f 61 7a 33 9d 07 f4  08 68 c9 b0 4f e3 34 60  |..az3....h..O.4`|
30   bb 9d 9c 3d 9e ce 69 57  b6 2f 36 c4 fd 13 bd 61  |...=..iW./6....a|
31   77 bf e3 1d 65 b5 ea f7  d2 fc 98 31 23 66 a0 1e  |w...e......1#f..|
32   a4 4f fa 66 49 36 84 a1  3e 0c 21 98 84 07 eb 07  |.O.fI6..>.!.....|
33
34
35 Build against bundled libsqlcipher
36 -----------------------------------
37 The default behaviour is to link against libsqlcipher in the system.
38
39 For convenience, this package includes a sqlcipher amalgamation during the regular
40 install. See https://www.sqlite.org/amalgamation.html
41
42 If you don't have sqlcipher installed in the system, you can use the bundled
43 pysqlcipher::
44
45   python setup.py install --bundled 
46
47 You can also pass a different amalgamation path, that you have previously
48 downloaded::
49
50   python setup.py install --bundled --amalgamation=/tmp/path/to/amalgamation
51
52 If you are installing from pip but for some reason you prefer to use the bundled
53 sqlcipher, you should pass the option along::
54
55   pip install pysqlcipher --install-option="--bundled"