检查数据库中新条目的最快,最有效的方法是什么?

时间:2019-10-18 02:54:23

标签: python mysql sql pyodbc

我目前有一个应用程序,可以在任何给定时间将新数据插入到我的数据库中。我还有一个不同的python脚本,该脚本在无限循环中检查我的数据库是否有新条目,当找到一个新条目时,它将选择它并使用它,然后再次等待。

我想知道是否有任何方法可以更有效,更准确地做到这一点?

谢谢

我目前有这样的设置:

<?php

class Login
 {
   private $db;
   private $userEmail;
   private $userPass;


  function __construct($db)
  {
    $this->db = $db;
  }

  function vertifyPass($userEmail, $userPass)
  {



    $sqlStatement = "SELECT user_pass FROM user WHERE user_email = :userEmail";
    $preparedStatement = $this->db->prepare($sqlStatement);
    $preparedStatement->bindParam(':userEmail', $userEmail);
    if($preparedStatement->execute())
    {
      $userData = $preparedStatement->fetchObject();
      $userData = $userData->user_pass;
      if(password_verify($userPass, $userData))
      {
        session_start();
        $_SESSION['user_email'] = $userEmail;
        header('Location: /profile.php');
      }
      else
      {
        echo "your username and password combinations was incorrect.";

      }
    }

}
}

?>

在一个循环中,例如:

conn = pyodbc.connect('Driver={ODBC Driver 13 for SQL Server};'
                      'Server=REDACTED;'
                      'Database= REDACTED;'
                      'UID= REDACTED;'
                      'PWD= REDACTED;')

cursor = conn.cursor()

它目前可以正常工作,但是我觉得它正在做很多工作而没有做。例如,在一周中,每个人每天只会真正访问数据库30-50次,而在周末,它将每天接近100-200次访问……唯一的是,没有固定数目它有时会访问它。

任何帮助都会有用。 谢谢

1 个答案:

答案 0 :(得分:0)

我以前从来没有这样做。但是想到了三个想法。

(1)如果您的脚本正在写入另一个数据库,那么您的替代方法可能是设置源数据库的复制。原始数据库的DBA可以为您进行设置。

(2)如果您愿意对原始数据库进行大修,则可以考虑使用实时内存数据库(例如redis),具体取决于您可能会用到的用例。

(3)似乎sqlalchemy具有内置的事件侦听器。我在Python中使用sqlalchemy,但从未使用此特定功能。

https://docs.sqlalchemy.org/en/13/orm/session_events.html