database.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. const mysql = require('mysql2/promise');
  2. const dbConfig = {
  3. host: 'rm-t4na9qj85v7790tf84o.mysql.singapore.rds.aliyuncs.com',
  4. port: 3306,
  5. user: 'crawler_admin',
  6. password: 'cyber#crawler_2023',
  7. database: 'tools_auto_access',
  8. charset: 'utf8mb4',
  9. timezone: '+08:00',
  10. acquireTimeout: 60000,
  11. timeout: 60000,
  12. reconnect: true
  13. };
  14. let pool;
  15. const createPool = () => {
  16. pool = mysql.createPool({
  17. ...dbConfig,
  18. waitForConnections: true,
  19. connectionLimit: 10,
  20. queueLimit: 0
  21. });
  22. console.log('Database pool created');
  23. return pool;
  24. };
  25. const getConnection = async () => {
  26. if (!pool) {
  27. createPool();
  28. }
  29. return await pool.getConnection();
  30. };
  31. const executeQuery = async (sql, params = []) => {
  32. const connection = await getConnection();
  33. try {
  34. const [rows] = await connection.execute(sql, params);
  35. return rows;
  36. } catch (error) {
  37. console.error('Database query error:', error);
  38. throw error;
  39. } finally {
  40. connection.release();
  41. }
  42. };
  43. module.exports = {
  44. createPool,
  45. getConnection,
  46. executeQuery
  47. };