Exemplo n.º 1
0
 def test_mysql_params(self):
     res = expand_db_url(
         "mysql://root:@127.0.0.1:3306/test?AHA=5&moo=yes&maxsize=20&minsize=5"
         "&connect_timeout=1.5&echo=1")
     self.assertEqual(
         res,
         {
             "engine": "tortoise.backends.mysql",
             "credentials": {
                 "database": "test",
                 "host": "127.0.0.1",
                 "password": "",
                 "port": 3306,
                 "user": "******",
                 "AHA": "5",
                 "moo": "yes",
                 "minsize": 5,
                 "maxsize": 20,
                 "connect_timeout": 1.5,
                 "echo": True,
                 "charset": "utf8mb4",
                 "sql_mode": "STRICT_TRANS_TABLES",
             },
         },
     )
Exemplo n.º 2
0
 def test_sqlite_relative(self):
     res = expand_db_url("sqlite://test.sqlite")
     self.assertDictEqual(
         res, {
             "engine": "tortoise.backends.sqlite",
             "credentials": {
                 "file_path": "test.sqlite"
             }
         })
Exemplo n.º 3
0
 def _create_connection(self, conn_alias: str) -> "BaseDBAsyncClient":
     db_info = self._get_db_info(conn_alias)
     if isinstance(db_info, str):
         db_info = expand_db_url(db_info)
     client_class = self._discover_client_class(db_info.get("engine", ""))
     db_params = db_info["credentials"].copy()
     db_params.update({"connection_name": conn_alias})
     connection: "BaseDBAsyncClient" = client_class(**db_params)
     return connection
Exemplo n.º 4
0
 async def _init_connections(cls, connections_config, create_db):
     for name, info in connections_config.items():
         if isinstance(info, str):
             info = expand_db_url(info)
         client_class = cls._discover_client_class(info.get('engine'))
         connection = client_class(**info['credentials'])
         if create_db:
             await connection.db_create()
         await connection.create_connection()
         cls._connections[name] = connection
Exemplo n.º 5
0
 def test_sqlite_relative_with_subdir(self):
     res = expand_db_url("sqlite://data/db.sqlite")
     self.assertDictEqual(
         res,
         {
             "engine": "tortoise.backends.sqlite",
             "file_path": "data/db.sqlite",
             "journal_mode": "WAL",
             "journal_size_limit": 16384,
         },
     )
Exemplo n.º 6
0
 def test_sqlite_basic(self):
     res = expand_db_url("sqlite:///some/test.sqlite")
     self.assertDictEqual(
         res,
         {
             "engine": "tortoise.backends.sqlite",
             "file_path": "/some/test.sqlite",
             "journal_mode": "WAL",
             "journal_size_limit": 16384,
         },
     )
Exemplo n.º 7
0
 def test_sqlite_basic(self):
     res = expand_db_url("sqlite:///some/test.sqlite")
     self.assertDictEqual(
         res,
         {
             "engine": "tortoise.backends.sqlite",
             "credentials": {
                 "file_path": "/some/test.sqlite"
             },
         },
     )
Exemplo n.º 8
0
 def test_sqlite_relative_with_subdir(self):
     res = expand_db_url("sqlite://data/db.sqlite")
     self.assertDictEqual(
         res,
         {
             "engine": "tortoise.backends.sqlite",
             "credentials": {
                 "file_path": "data/db.sqlite"
             }
         },
     )
Exemplo n.º 9
0
 def test_sqlite_relative(self):
     res = expand_db_url("sqlite://test.sqlite")
     self.assertDictEqual(
         res,
         {
             "engine": "tortoise.backends.sqlite",
             "credentials": {
                 "file_path": "test.sqlite",
                 "journal_mode": "WAL",
                 "journal_size_limit": 16384,
             },
         },
     )
Exemplo n.º 10
0
 def test_sqlite_params(self):
     res = expand_db_url("sqlite:///some/test.sqlite?AHA=5&moo=yes")
     self.assertDictEqual(
         res,
         {
             "engine": "tortoise.backends.sqlite",
             "credentials": {
                 "file_path": "/some/test.sqlite",
                 "AHA": "5",
                 "moo": "yes"
             },
         },
     )
Exemplo n.º 11
0
 def test_postgres_basic(self):
     res = expand_db_url("postgres://*****:*****@127.0.0.1:54321/test")
     self.assertDictEqual(
         res,
         {
             "engine": "tortoise.backends.asyncpg",
             "database": "test",
             "host": "127.0.0.1",
             "password": "******",
             "port": 54321,
             "user": "******",
         },
     )
Exemplo n.º 12
0
 async def _init_connections(cls, connections_config, create_db):
     for name, info in connections_config.items():
         if isinstance(info, str):
             info = expand_db_url(info)
         client_class = cls._discover_client_class(info.get('engine'))
         db_params = deepcopy(info['credentials'])
         db_params.update({'connection_name': name})
         connection = client_class(**db_params)
         if create_db:
             await connection.db_create()
         await connection.create_connection()
         cls._connections[name] = connection
         current_transaction_map[name] = ContextVar(name, default=None)
Exemplo n.º 13
0
 def test_mysql_params(self):
     res = expand_db_url('mysql://root:@127.0.0.1:3306/test?AHA=5&moo=yes')
     self.assertEqual(res, {
         'engine': 'tortoise.backends.mysql',
         'credentials': {
             'database': 'test',
             'host': '127.0.0.1',
             'password': '',
             'port': '3306',
             'user': '******',
             'AHA': '5',
             'moo': 'yes',
         }
     })
Exemplo n.º 14
0
 def test_sqlite_testing(self):
     res = expand_db_url(db_url="sqlite:///some/test-{}.sqlite",
                         testing=True)
     file_path = res["credentials"]["file_path"]
     self.assertIn("/some/test-", file_path)
     self.assertIn(".sqlite", file_path)
     self.assertNotEqual("sqlite:///some/test-{}.sqlite", file_path)
     self.assertDictEqual(
         res, {
             "engine": "tortoise.backends.sqlite",
             "credentials": {
                 "file_path": file_path
             }
         })
Exemplo n.º 15
0
 def test_sqlite_params(self):
     res = expand_db_url(
         "sqlite:///some/test.sqlite?AHA=5&moo=yes&journal_mode=TRUNCATE")
     self.assertDictEqual(
         res,
         {
             "engine": "tortoise.backends.sqlite",
             "file_path": "/some/test.sqlite",
             "AHA": "5",
             "moo": "yes",
             "journal_mode": "TRUNCATE",
             "journal_size_limit": 16384,
         },
     )
Exemplo n.º 16
0
    def _init_connections(self, connections_config: dict) -> None:
        for connection_name, conn_config in connections_config.items():
            if isinstance(conn_config, str):
                conn_config = expand_db_url(conn_config)

            client_class = self._discover_client_class(
                conn_config.get("engine"))
            db_params = conn_config.copy()
            db_params.pop("engine", None)
            db_params.update({"connection_name": connection_name})
            db_client = client_class(**db_params)

            self._db_client_map[connection_name] = db_client
            self._current_transaction_map[connection_name] = ContextVar(
                connection_name, default=db_client)
Exemplo n.º 17
0
 def test_postgres_no_port(self):
     res = expand_db_url("postgres://[email protected]/test")
     self.assertDictEqual(
         res,
         {
             "engine": "tortoise.backends.asyncpg",
             "credentials": {
                 "database": "test",
                 "host": "127.0.0.1",
                 "password": "",
                 "port": 5432,
                 "user": "******",
             },
         },
     )
Exemplo n.º 18
0
 def test_mysql_no_port(self):
     res = expand_db_url("mysql://[email protected]/test")
     self.assertEqual(
         res,
         {
             "engine": "tortoise.backends.mysql",
             "credentials": {
                 "database": "test",
                 "host": "127.0.0.1",
                 "password": "",
                 "port": 3306,
                 "user": "******",
             },
         },
     )
Exemplo n.º 19
0
 def test_mysql_no_port(self):
     res = expand_db_url("mysql://[email protected]/test")
     self.assertEqual(
         res,
         {
             "engine": "tortoise.backends.mysql",
             "database": "test",
             "host": "127.0.0.1",
             "password": "",
             "port": 3306,
             "user": "******",
             "charset": "utf8mb4",
             "sql_mode": "STRICT_TRANS_TABLES",
         },
     )
Exemplo n.º 20
0
 def test_postgres_encoded_password(self):
     res = expand_db_url(
         "postgres://*****:*****@127.0.0.1:54321/test")
     self.assertDictEqual(
         res,
         {
             "engine": "tortoise.backends.asyncpg",
             "credentials": {
                 "database": "test",
                 "host": "127.0.0.1",
                 "password": "******",
                 "port": 54321,
                 "user": "******",
             },
         },
     )
Exemplo n.º 21
0
 def test_postgres_no_port(self):
     for scheme, engine in self._postgres_scheme_engines.items():
         res = expand_db_url(f"{scheme}://[email protected]/test")
         self.assertDictEqual(
             res,
             {
                 "engine": engine,
                 "credentials": {
                     "database": "test",
                     "host": "127.0.0.1",
                     "password": None,
                     "port": 5432,
                     "user": "******",
                 },
             },
         )