app.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. from flask import Flask, render_template, request, redirect
  2. import pymysql
  3. import pyshorteners
  4. app = Flask(__name__)
  5. # 配置 MySQL 数据库连接
  6. app.config['MYSQL_DATABASE_USER'] = 'root'
  7. app.config['MYSQL_DATABASE_PASSWORD'] = 'guo784512'
  8. app.config['MYSQL_DATABASE_DB'] = 'your_database'
  9. app.config['MYSQL_DATABASE_HOST'] = 'localhost'
  10. # 初始化 MySQL 连接
  11. db = pymysql.connect(
  12. user=app.config['MYSQL_DATABASE_USER'],
  13. password=app.config['MYSQL_DATABASE_PASSWORD'],
  14. database=app.config['MYSQL_DATABASE_DB'],
  15. host=app.config['MYSQL_DATABASE_HOST'],
  16. port=3306 # 将端口号改为
  17. )
  18. @app.route('/')
  19. def index():
  20. return render_template('index.html')
  21. @app.route('/shorten', methods=['POST'])
  22. def shorten():
  23. original_url = request.form['url']
  24. s = pyshorteners.Shortener()
  25. short_url = s.tinyurl.short(original_url)
  26. # 将原始URL和短网址保存到数据库
  27. with db.cursor() as cursor:
  28. cursor.execute("INSERT INTO urls (original_url, short_url) VALUES (%s, %s)", (original_url, short_url))
  29. db.commit()
  30. return render_template('result.html', original_url=original_url, short_url=short_url)
  31. @app.route('/<short_url>')
  32. def redirect_to_original(short_url):
  33. # 从数据库中获取原始URL并重定向
  34. with db.cursor() as cursor:
  35. cursor.execute("SELECT original_url FROM urls WHERE short_url = %s", (short_url,))
  36. result = cursor.fetchone()
  37. if result:
  38. original_url = result[0]
  39. return redirect(original_url)
  40. else:
  41. return "Short URL not found."
  42. if __name__ == '__main__':
  43. # 创建数据库表
  44. with app.app_context():
  45. with db.cursor() as cursor:
  46. cursor.execute("CREATE TABLE IF NOT EXISTS urls (id INT AUTO_INCREMENT PRIMARY KEY, original_url VARCHAR(255), short_url VARCHAR(255))")
  47. db.commit()
  48. app.run(debug=True, port=5001) # 将端口号改为 5001
  49. # jkljll
  50. # zjs