class URLShortener:
def __init__(self, db_name):
self.conn = sqlite3.connect(db_name)
self.cursor = self.conn.cursor()
self.cursor.execute('''
CREATE TABLE IF NOT EXISTS urls
(short_url TEXT PRIMARY KEY, long_url TEXT)
''')
def shorten_url(self, long_url):
使用uuid生成短地址,也可以使用hashlib进行哈希
short_url = hashlib.sha256(long_url.encode()).hexdigest()[:6]
self.cursor.execute('SELECT * FROM urls WHERE long_url=?', (long_url,))
if self.cursor.fetchone():
如果已经存在,直接返回短地址
return short_url
else:
插入新记录
self.cursor.execute('INSERT INTO urls VALUES (?, ?)', (short_url, long_url))
self.conn.commit()
return short_url
def get_long_url(self, short_url):
self.cursor.execute('SELECT long_url FROM urls WHERE short_url=?', (short_url,))
result = self.cursor.fetchone()
return result[0] if result else None