sql >> Database >  >> RDS >> Mysql

Een eenmalige query maken naar een andere database en tabel

Ervan uitgaande dat het toegankelijk is met dezelfde databasereferenties en op dezelfde MySQL-server, zou de eenvoudigste manier zijn om een ​​query uit te voeren die de database en tabel specificeert in de FROM clausule van de query, als zodanig:

ActiveRecord::Base.connection.select_one(
    "SELECT * FROM blog_database.posts ORDER BY created_at DESC LIMIT 1")

select_one retourneert een hash van kolommen naar waarden. Voor meer informatie over methoden die u kunt gebruiken op de connection object, zie deze documentatie .

De tweede optie is om een ​​subklasse van ActiveRecord aan te maken en establish_connection aan te roepen :

class Blog < ActiveRecord::Base
  establish_connection :blog

  def self.most_recent_post
    connection.select_one("SELECT * FROM posts ...")
  end
end

Je moet ook een blog maken database-invoer in uw database.yml het dossier. Zie establish_connection voor meer details, hoewel helaas het gebruik op deze manier eigenlijk alleen bekend is door te kijken naar de broncode voor establish_connection .

Dan kunt u de blog-databaseverbinding gebruiken in zoekopdrachten, zoals:

Blog.connection.select_one("SELECT * FROM posts ...")

Wat leuk is om het op deze manier te doen, is dat je nu een mooie plek hebt om een ​​methode te definiëren (in de Blog-klasse, als een klassenmethode) om de gegevens op te halen, zoals ik hierboven heb gedaan.

Beide strategieën zouden goed moeten werken met Rails 2.x of 3.x.




  1. De index van een ingevoegde rij ophalen

  2. Mysqli_error() werkt niet

  3. MySqlException:Time-out verlopen - Toenemende time-out van verbinding heeft geen effect gehad

  4. Mysql-rij verwijderen na opgegeven tijd