在正式连接 MariaDB 数据库之前,确保你具备必要的环境和权限。MariaDB 作为 MySQL 的分支,兼容性良好,能无缝工作在大多数 Linux、Windows、macOS 环境中,方便开发与部署。
首先要确认本地或服务器上已经有MariaDB 服务端,并且具备一个可以登陆的账号与密码。你也需要有一个数据库和基础表,方便后续的查询与创建。
在开发环境中需要一门现代的Python 版本(推荐 Python 3.8 及以上),以及一个合适的数据库连接驱动。常见的两种选择是官方的mariadb驱动和 mysql-connector-python。下面给出安装方式。
pip install mariadb
pip install mysql-connector-python
要连接 MariaDB 需要提供主机地址、端口、用户名、密码、目标数据库等信息。把这些参数安全地放在环境变量中可以提升安全性。
使用 mariadb 驱动时,常见的连接方式是通过 mariadb.connect(),传入参数关键字参数。
import os import mariadbhost = os.getenv(“DB_HOST”, “127.0.0.1”) port = int(os.getenv(“DB_PORT”, 3306)) user = os.getenv(“DB_USER”, “root”) password = os.getenv(“DB_PASSWORD”, “”) database = os.getenv(“DB_NAME”, “testdb”)try:conn = mariadb.connect(host=host,port=port,user=user,password=password,database=database)print(“Connected to MariaDB”) except mariadb.Error as e:print(f”Error connecting to MariaDB: {e}“)
# 使用连接后的游标执行简单查询 with conn.cursor() as cur:cur.execute(“SELECT 1”)row = cur.fetchone()print(row)
下面提供一个从连接、建表、插入数据、查询数据到清理资源的完整示例。它演示了参数化查询以避免 SQL 注入和显式提交事务。
在演示中用到的表结构设计简单明了,便于快速上手和后续扩展。设计一个自增主键和两个字段,便于演练增删改查。
import mariadbdef create_connection():return mariadb.connect(host=“127.0.0.1”,port=3306,user=“your_user”,password=“your_password”,database=“your_database”)def setup_table(conn):with conn.cursor() as cursor:cursor.execute(“”“CREATE TABLE IF NOT EXISTS sensors (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100) NOT NULL,value FLOAT)”“”)conn.commit()def insert_sample(conn, name, value):with conn.cursor() as cursor:cursor.execute(“INSERT INTO sensors (name, value) VALUES (?, ?)”, (name, value))conn.commit()def fetch_all(conn):with conn.cursor() as cursor:cursor.execute(“SELECT id, name, value FROM sensors”)for row in cursor:print(row)def main():conn = Nonetry:conn = create_connection()setup_table(conn)insert_sample(conn, “temperature”, 23.5)fetch_all(conn)finally:if conn:conn.close()if name == “main”:main()
如果遇到连接失败,请首先检查主机地址、端口、用户名和密码是否正确,以及数据库用户是否有访问目标数据库的权限。确认防火墙和网络策略允许客户端与 MariaDB 服务器的端口通信,通常是 3306。
如果日志显示权限不足,请确认用户在 MariaDB 端具有相应的权限,例如 GRANT ALL PRIVILEGES 或者对特定数据库的权限。可以通过管理员账户执行授权语句进行修复。
在遇到驱动相关的错误时,建议先检查所用驱动版本是否与 MariaDB 服务器版本兼容,并确保你的 Python 环境能加载所选的驱动包。
import mariadbtry:conn = mariadb.connect(host=“127.0.0.1”,port=3306,user=“wrong_user”,password=“wrong_password”,database=“testdb”) except mariadb.Error as e:print(“连接错误:”, e)
进行增删改操作时,使用参数化查询可以避免 SQL 注入风险,建议始终使用问号占位符和参数元组的组合方式。
确认对写操作使用了 conn.commit(),否则变更可能不会保存到数据库中。对于只读操作,可以将自动提交关闭以减少锁持有时间。
with conn.cursor() as cursor:cursor.execute(“INSERT INTO sensors (name, value) VALUES (?, ?)”, (“pressure”, 101.3))conn.commit()
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/263329.html