今天展示python访问myql数据库的例子。网上查了一下有很多访问mysql用的python库,这里选用了mysql-connector-python库
安装mysql-connector-python库
执行pip install mysql-connector-python命令安装该库,如果出现类似这样的错误
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
就在这一个安装命令后面加一个镜像参数 -i
https://mirrors.aliyun.com/pypi/simple/
连接mysql DB
import mysql.connector
# 创建数据库连接
db = mysql.connector.connect(
host="localhost",
user="your_username",
password="your_password",
database="your_database"
)
# 创建游标对象
cursor = db.cursor()
# 执行简单查询
cursor.execute("SELECT VERSION()")
data = cursor.fetchone()
print("Database version:", data[0])
# 关闭连接
cursor.close()
db.close()
这段代码是Python操作MySQL数据库的基础示例,验证了连接是否成功并获取数据库版本信息。
连接参数:需要替换your_username、your_password和your_database为实际的数据库凭据
游标(cursor):是数据库操作的工作区,所有SQL操作都通过游标执行
fetchone():获取查询结果的下一行
资源释放:最后必须关闭游标和连接,这是良好的编程习惯
插入数据
先在mysql客户端执行建表语句
CREATE TABLE IF NOT EXISTS employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
department VARCHAR(255),
salary DECIMAL(10, 2),
hire_date DATE
)
然后执行下面的代码
from datetime import date
……
# 插入单条数据
insert_sql = "INSERT INTO employees (name, department, salary, hire_date) VALUES (%s, %s, %s, %s)"
employee_data = ("John Doe", "IT", 75000.00, date(2020, 5, 15))
cursor.execute(insert_sql, employee_data)
# 插入多条数据
employees = [
("Jane Smith", "HR", 65000.00, date(2019, 3, 10)),
("Bob Johnson", "Finance", 80000.00, date(2018, 7, 22)),
("Alice Brown", "IT", 78000.00, date(2021, 1, 5))
]
cursor.executemany(insert_sql, employees)
# 提交事务
db.commit()
print(cursor.rowcount, "records inserted")
cursor.close()
db.close()
这段代码用cursor的execute函数,执行响应的insert sql语句。最关键的是db.commit函数,由于本例展示的并不是自动提交,所以一定要记得commit。不然数据不会真正保存到数据库中。
查询数据
# 查询所有数据
cursor.execute("SELECT * FROM employees")
result = cursor.fetchall()
print("All employees:")
for row in result:
print(row)
# 带条件查询
department = "IT"
cursor.execute("SELECT * FROM employees WHERE department = %s", (department,))
it_employees = cursor.fetchall()
print(f"\nEmployees in {department} department:")
for emp in it_employees:
print(emp)
cursor.close()
db.close()
查询数据时,执行完execute函数,调用cursor的fetchall函数,返回一个结果集,类型是列表。然后遍历这个列表,获得一条条类型为元组的记录。
更新和删除数据
更新和删除数据就不再这里展示,除sql语句不同,代码跟插入数据并没有太大的区别,网上也有其他相关例子
总结
这篇展示了python 连接mysql数据库,插入数据和查询数据的方式。