Create a new :class:`_engine.URL` object. .. seealso:: :ref:`database_urls` :param drivername: the name of the database backend. This name will correspond to a module in sqlalchemy/databases or a third party plug-in. :param username: The use
(
cls,
drivername: str,
username: Optional[str] = None,
password: Optional[str] = None,
host: Optional[str] = None,
port: Optional[int] = None,
database: Optional[str] = None,
query: Mapping[str, Union[Sequence[str], str]] = util.EMPTY_DICT,
)
| 151 | |
| 152 | @classmethod |
| 153 | def create( |
| 154 | cls, |
| 155 | drivername: str, |
| 156 | username: Optional[str] = None, |
| 157 | password: Optional[str] = None, |
| 158 | host: Optional[str] = None, |
| 159 | port: Optional[int] = None, |
| 160 | database: Optional[str] = None, |
| 161 | query: Mapping[str, Union[Sequence[str], str]] = util.EMPTY_DICT, |
| 162 | ) -> URL: |
| 163 | """Create a new :class:`_engine.URL` object. |
| 164 | |
| 165 | .. seealso:: |
| 166 | |
| 167 | :ref:`database_urls` |
| 168 | |
| 169 | :param drivername: the name of the database backend. This name will |
| 170 | correspond to a module in sqlalchemy/databases or a third party |
| 171 | plug-in. |
| 172 | :param username: The user name. |
| 173 | :param password: database password. Is typically a string, but may |
| 174 | also be an object that can be stringified with ``str()``. |
| 175 | |
| 176 | .. note:: The password string should **not** be URL encoded when |
| 177 | passed as an argument to :meth:`_engine.URL.create`; the string |
| 178 | should contain the password characters exactly as they would be |
| 179 | typed. |
| 180 | |
| 181 | .. note:: A password-producing object will be stringified only |
| 182 | **once** per :class:`_engine.Engine` object. For dynamic password |
| 183 | generation per connect, see :ref:`engines_dynamic_tokens`. |
| 184 | |
| 185 | :param host: The name of the host. |
| 186 | :param port: The port number. |
| 187 | :param database: The database name. |
| 188 | :param query: A dictionary of string keys to string values to be passed |
| 189 | to the dialect and/or the DBAPI upon connect. To specify non-string |
| 190 | parameters to a Python DBAPI directly, use the |
| 191 | :paramref:`_sa.create_engine.connect_args` parameter to |
| 192 | :func:`_sa.create_engine`. See also |
| 193 | :attr:`_engine.URL.normalized_query` for a dictionary that is |
| 194 | consistently string->list of string. |
| 195 | :return: new :class:`_engine.URL` object. |
| 196 | |
| 197 | .. versionadded:: 1.4 |
| 198 | |
| 199 | The :class:`_engine.URL` object is now an **immutable named |
| 200 | tuple**. In addition, the ``query`` dictionary is also immutable. |
| 201 | To create a URL, use the :func:`_engine.url.make_url` or |
| 202 | :meth:`_engine.URL.create` function/ method. To modify a |
| 203 | :class:`_engine.URL`, use the :meth:`_engine.URL.set` and |
| 204 | :meth:`_engine.URL.update_query` methods. |
| 205 | |
| 206 | """ |
| 207 | |
| 208 | return cls( |
| 209 | cls._assert_str(drivername, "drivername"), |
| 210 | cls._assert_none_str(username, "username"), |