PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

SQLAlchemy поддръжка на Postgres схеми

добре, има няколко начина да стигнете до това и това зависи от това как е структурирано вашето приложение. Ето най-основния начин:

meta = MetaData(schema="client1")

Ако начинът, по който работи приложението ви, е един "клиент" в даден момент в рамките на цялото приложение, сте готови.

Но това, което може да не е наред с това тук е, че всяка таблица от тези метаданни е в тази схема. Ако искате едно приложение да поддържа множество клиенти едновременно (обикновено това, което означава „многото клиент“), това би било тромаво, тъй като ще трябва да създадете копие на MetaData и да изпълните всички съпоставяния за всеки клиент. Този подход може да бъде направен, ако наистина искате, начинът, по който работи, е да получите достъп до всеки клиент с конкретен картографиран клас като:

client1_foo = Client1Foo()

и в този случай ще работите с рецептата за "име на обект" на http://www.sqlalchemy.org/trac/wiki/UsageRecipes/EntityName във връзка с sometable.tometadata() (вижте http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.Table.tometadata).

Така че да кажем, че начинът, по който наистина работи, е множество клиенти в приложението, но само един по един на нишка. Всъщност най-лесният начин да направите това в Postgresql би бил да зададете пътя за търсене, когато започнете да работите с връзка:

# start request

# new session
sess = Session()

# set the search path
sess.execute("SET search_path TO client1")

# do stuff with session

# close it.  if you're using connection pooling, the
# search path is still set up there, so you might want to 
# revert it first
sess.close()

Последният подход би бил да се отмени компилаторът, като се използва разширението @compiles, за да се постави името на "схема" в изразите. Това е изпълнимо, но би било трудно, тъй като няма последователна кука за навсякъде, където се генерира "Таблица". Най-добрият ви залог вероятно е да зададете пътя за търсене за всяка заявка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разработване на PostgreSQL за Windows, част 3

  2. Кажете на потребителите си да се разклонят

  3. Как да промените база данни на postgresql със Symfony 2.0?

  4. Незаконна инструкция:4 при стартиране на Django

  5. Създаване на дъмп на база данни за конкретни таблици и записи Postgres