lib/my_db.py
branchxbelweb
changeset 12 800be3836f3b
parent 8 c763c420cbfc
child 13 7357230539d2
equal deleted inserted replaced
11:08b3855f5e48 12:800be3836f3b
     1 #!/usr/bin/python
     1 #!/usr/bin/python
     2 
     2 
     3 import pgdb
     3 import pgdb
     4 import config
     4 import config
     5 from bkmark import Bookmark
     5 from bkmark import Bookmark
       
     6 
       
     7 def sql_quote(str):
       
     8 	return pgdb._quote(str)
     6 
     9 
     7 class MyDbConnexion:
    10 class MyDbConnexion:
     8 	def __init__(self):
    11 	def __init__(self):
     9 		self.cnx = pgdb.connect(database = config.database,
    12 		self.cnx = pgdb.connect(database = config.database,
    10 			host = config.host+':%d'%config.port,
    13 			host = config.host+':%d'%config.port,
    12 		self.crs = self.cnx.cursor();
    15 		self.crs = self.cnx.cursor();
    13 	def add_bookmark(self, bk):
    16 	def add_bookmark(self, bk):
    14 		id = self.get_next_id('bookmarks')
    17 		id = self.get_next_id('bookmarks')
    15 		self.crs.execute("""
    18 		self.crs.execute("""
    16 			INSERT INTO bookmarks(id, url, name, ldesc, added)
    19 			INSERT INTO bookmarks(id, url, name, ldesc, added)
    17 			VALUES (%d, '%s', '%s', '%s', '%s');
    20 			VALUES (%d, %s, %s, %s, %s);
    18 			INSERT INTO bookmarks_keywords(bookmark, keyword)
    21 			INSERT INTO bookmarks_keywords(bookmark, keyword)
    19 			VALUES (%d, %d);
    22 			VALUES (%d, %d);
    20 			""" % (id, bk.url, bk.name, bk.desc, bk.added,
    23 			""" % (id, sql_quote(bk.url),
    21 			id, 0))
    24 			sql_quote(bk.name), sql_quote(bk.desc),
       
    25 			sql_quote(bk.added), id, 0))
    22 		self.cnx.commit()
    26 		self.cnx.commit()
    23 		return id
    27 		return id
    24 	def get_bookmarks(self, ids):
    28 	def get_bookmarks(self, ids):
    25 		qry = """
    29 		qry = """
    26 			SELECT id, url, name, ldesc, added
    30 			SELECT id, url, name, ldesc, added
    43 			bks.append(bk)
    47 			bks.append(bk)
    44 		return bks
    48 		return bks
    45 	def update_bookmark(self, bk):
    49 	def update_bookmark(self, bk):
    46 		self.crs.execute("""
    50 		self.crs.execute("""
    47 			UPDATE bookmarks
    51 			UPDATE bookmarks
    48 			SET url = '%s', name = '%s',
    52 			SET url = %s, name = %s,
    49 			ldesc = '%s', added = '%s'
    53 			ldesc = %s, added = %s
    50 			WHERE id = %d;
    54 			WHERE id = %d;
    51 			""" % (bk.url, bk.name, bk.desc, bk.added, bk.id))
    55 			""" % (bk.url, sql_quote(bk.name),
       
    56 			sql_quote(bk.desc),
       
    57 			sql_quote(bk.added), bk.id))
    52 		self.cnx.commit()
    58 		self.cnx.commit()
    53 	def update_keywords(self, id, keywords):
    59 	def update_keywords(self, id, keywords):
    54 		self.crs.execute("""
    60 		self.crs.execute("""
    55 			DELETE FROM bookmarks_keywords
    61 			DELETE FROM bookmarks_keywords
    56 			WHERE bookmark = %d AND
    62 			WHERE bookmark = %d AND
    72 		self.cnx.commit()
    78 		self.cnx.commit()
    73 	def add_keyword(self, name):
    79 	def add_keyword(self, name):
    74 		id = self.get_next_id('keywords')
    80 		id = self.get_next_id('keywords')
    75 		self.crs.execute("""
    81 		self.crs.execute("""
    76 			INSERT INTO keywords(id, name)
    82 			INSERT INTO keywords(id, name)
    77 			VALUES (%d, '%s');
    83 			VALUES (%d, %s);
    78 			""" % (id, name))
    84 			""" % (id, sql_quote(name)))
    79 		self.cnx.commit()
    85 		self.cnx.commit()
    80 		return id
    86 		return id
    81 	def get_keyword(self, id):
    87 	def get_keyword(self, id):
    82 		self.crs.execute("""
    88 		self.crs.execute("""
    83 			SELECT name FROM keywords
    89 			SELECT name FROM keywords
    93 			""" % (bk_id,))
    99 			""" % (bk_id,))
    94 		return self.crs.fetchall()
   100 		return self.crs.fetchall()
    95 	def update_keyword(self, id, name):
   101 	def update_keyword(self, id, name):
    96 		self.crs.execute("""
   102 		self.crs.execute("""
    97 			UPDATE keywords
   103 			UPDATE keywords
    98 			SET name = '%s'
   104 			SET name = %s
    99 			WHERE id = %d;
   105 			WHERE id = %d;
   100 			""" % (name, id))
   106 			""" % (sql_quote(name), id))
   101 		self.cnx.commit()
   107 		self.cnx.commit()
   102 	def remove_keyword(self, id):
   108 	def remove_keyword(self, id):
   103 		if id == 0:
   109 		if id == 0:
   104 			raise "Can't remove default keyword!"
   110 			raise "Can't remove default keyword!"
   105 		self.crs.execute("""
   111 		self.crs.execute("""
   140 		return self.crs.fetchall()
   146 		return self.crs.fetchall()
   141 	def get_next_id(self, seq_name):
   147 	def get_next_id(self, seq_name):
   142 		self.crs.execute("""
   148 		self.crs.execute("""
   143 			SELECT nextid FROM db_sequence WHERE
   149 			SELECT nextid FROM db_sequence WHERE
   144 			db_sequence.seq_name = '%s' FOR UPDATE;
   150 			db_sequence.seq_name = '%s' FOR UPDATE;
   145 			""" % (seq_name))
   151 			""" % (seq_name,))
   146 		id = self.crs.fetchone()[0]
   152 		id = self.crs.fetchone()[0]
   147 		self.crs.execute("""
   153 		self.crs.execute("""
   148 			UPDATE db_sequence SET nextid = %d
   154 			UPDATE db_sequence SET nextid = %d
   149 			WHERE seq_name = '%s';
   155 			WHERE seq_name = '%s';
   150 			""" % (id+1, seq_name))
   156 			""" % (id+1, seq_name))