summaryrefslogtreecommitdiff
path: root/doc/includes/sqlite3/authorizer.py
diff options
context:
space:
mode:
Diffstat (limited to 'doc/includes/sqlite3/authorizer.py')
-rw-r--r--doc/includes/sqlite3/authorizer.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/doc/includes/sqlite3/authorizer.py b/doc/includes/sqlite3/authorizer.py
new file mode 100644
index 0000000..0176c6c
--- /dev/null
+++ b/doc/includes/sqlite3/authorizer.py
@@ -0,0 +1,26 @@
+from pysqlite2 import dbapi2 as sqlite3
+
+def authorizer_callback(action, arg1, arg2, dbname, source):
+ if action != sqlite3.SQLITE_SELECT:
+ return sqlite3.SQLITE_DENY
+ if arg1 == "private_table":
+ return sqlite3.SQLITE_DENY
+ return sqlite3.SQLITE_OK
+
+con = sqlite3.connect(":memory:")
+con.executescript("""
+ create table public_table(c1, c2);
+ create table private_table(c1, c2);
+ """)
+con.set_authorizer(authorizer_callback)
+
+try:
+ con.execute("select * from private_table")
+except sqlite3.DatabaseError, e:
+ print "SELECT FROM private_table =>", e.args[0] # access ... prohibited
+
+try:
+ con.execute("insert into public_table(c1, c2) values (1, 2)")
+except sqlite3.DatabaseError, e:
+ print "DML command =>", e.args[0] # access ... prohibited
+