Details
-
New Feature
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
None
-
None
Description
Summary
Support connection URIs (mariadb://user:pass@host/db) in addition to current parameter-based connection.
Current vs Proposed
Current (parameters only):
conn = mariadb.connect(host="localhost", user="root", password="secret", database="mydb") |
Proposed (URI support):
URI format |
conn = mariadb.connect("mariadb://root:secret@localhost:3306/mydb") |
With options
|
conn = mariadb.connect("mariadb://root:secret@localhost/mydb?charset=utf8mb4&ssl=true") |
Parameters still work (backward compatible)
|
conn = mariadb.connect(host="localhost", user="root") |
Benefits
Simplified configuration (single string)
Standard format (used by asyncpg, psycopg3, SQLAlchemy)
Easy environment variable usage
Compatible with modern Python tools
URI Format
mariadb://[user[:password]@][host][:port][/database][?option1=value1&option2=value2]
|
Examples:
"mariadb://localhost" # Minimal |
"mariadb://user:pass@localhost:3306/mydb" # Full |
"mariadb://user:pass@host/db?charset=utf8mb4" # With options |
"mariadb://user:p%40ss@localhost/db" # URL-encoded password |
"mariadb://user:pass@[::1]/db" # IPv6 |
"mariadb://user:pass@localhost/db?unix_socket=/path" # Unix socket |
Priority:
Parameters override URI values when both provided:
conn = mariadb.connect("mariadb://user:pass@host/db", password="override") |