diff options
Diffstat (limited to 'feed/sse_db.py')
-rw-r--r-- | feed/sse_db.py | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/feed/sse_db.py b/feed/sse_db.py new file mode 100644 index 0000000..4cf2af3 --- /dev/null +++ b/feed/sse_db.py @@ -0,0 +1,75 @@ + +import sys, os, MySQLdb, stat + +db = MySQLdb.connect(host = "localhost", user = "sse_web", passwd = "ece6Yoli", db = "sse") +cursor = db.cursor(); +cursor.execute("SET AUTOCOMMIT=0") + +def commit(): + cursor.execute('COMMIT') + +def rollback(): + cursor.execute('ROLLBACK') + +def start_transaction(): + cursor.execute('START TRANSACTION') + +def last_insert_id(): + cursor.execute('SELECT LAST_INSERT_ID()') + return int(cursor.fetchone()[0]) + +def new_package(archive, root, meta): + + cursor.execute('INSERT INTO package (path, timestamp, md) VALUES (%s, NOW(), %s)', (root + '/%s', meta["md"])) + + return last_insert_id(); + +def find_package(md): + + cursor.execute('SELECT id FROM package WHERE md=%s', md) + + if cursor.rowcount <= 0: + return None + + return int(cursor.fetchone()[0]) + +def new_provider_record(recid, package_id, provider_id, meta): + + try: + name = meta["name"] + except KeyError: + name = "noname" + + try: + url = meta["project-url"] + except KeyError: + url = "" + + try: + download_url = meta["archive-url"] + except KeyError: + download_url = "" + + try: + l = meta["license"] + except KeyError: + l = "" + + cursor.execute('REPLACE provider_record (id, package_id, provider_id, name, url, download_url, license) VALUES (%s, %s, %s, %s, %s, %s, %s)', (recid, package_id, provider_id, name, url, download_url, l)) + + +def new_file(package_id, path, language_id = 0): + + cursor.execute('INSERT INTO file (package_id, path, language_id) VALUES (%s, %s, %s)', (package_id, path, language_id)); + + return last_insert_id() + +def new_word(file_id, text, is_subword): + + if is_subword: + t = "subword" + else: + t = "word" + + cursor.execute('INSERT IGNORE INTO word (text, type, file_id, cnt) VALUES (%s, %s, %s, 0)', (text, t, file_id)) + cursor.execute('UPDATE word SET cnt=cnt+1 WHERE text=%s AND type=%s AND file_id=%s', (text, t, file_id)) |