连接Mysql一般有几种方法,主要讲解mysql.connector以及pymysql的连接
后续如果用到其他库还会持续总结!
对于数据库中的表格,本人设计如下:(为了配合下面的操作)
mysql.connector
是一个用于连接 MySQL 数据库的 Python 模块,它提供了一个官方的 MySQL 驱动程序,用于在 Python 中执行与 MySQL 数据库的交互。
概念:
连接器(Connector)
: mysql.connector 是 MySQL 官方提供的一个 Python 连接器,用于在 Python 程序中连接和操作 MySQL 数据库。游标(Cursor)
: 游标是用于执行 SQL 语句并获取结果的对象。通过游标,可以执行查询、插入、更新、删除等数据库操作。作用 | 基本功能 |
---|---|
1.连接数据库: 提供了建立与 MySQL 数据库的连接的功能。 2.执行 SQL 语句: 可以通过游标执行 SQL 查询和操作。 3.事务管理: 支持事务,可以提交或回滚事务。 4.错误处理: 提供了处理数据库操作中的错误的机制。 5.数据转换: 自动进行 Python 数据类型和 MySQL 数据类型之间的转换。 6.连接池管理: 可以使用连接池提高数据库连接的性能和效率。 | 1.建立连接: 使用 connect() 方法建立与 MySQL 数据库的连接。 2.创建游标: 使用 cursor() 方法创建游标对象,用于执行 SQL 语句。 3.执行 SQL 语句: 使用游标的 execute() 方法执行 SQL 查询或操作。 4.获取结果: 使用游标的 fetchone()、fetchall() 等方法获取查询结果。 5.提交事务: 使用连接的 commit() 方法提交事务。 6.回滚事务: 使用连接的 rollback() 方法回滚事务。 7.关闭连接: 使用连接的 close() 方法关闭与数据库的连接。 |
执行代码前,需要安装如下包:pip install mysql-connector-python
示例代码如下:
import datetime
import mysql.connector
# 建立数据库连接
db_connection = mysql.connector.connect(
host="your_host", # 数据库主机地址
user="your_username", # 数据库用户名
password="your_password", # 数据库密码
database="your_database" # 数据库名称
)
if "__main__" == __name__:
try:
# 创建游标对象
cursor = db_connection.cursor()
# 示例1: 执行插入
insert_query = "INSERT INTO test_student (username,delete_flag,time) VALUES (%s, %s, %s)"
data = ('manong',0,datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
cursor.execute(insert_query, data)
# 提交事务
db_connection.commit()
# 执行 SQL 查询或操作
cursor.execute("SELECT * FROM test_student")
# 获取查询结果
result = cursor.fetchall()
for row in result:
print(row)
finally:
# 关闭游标和连接
cursor.close()
db_connection.close()
截图如下:
pymysql 是一个纯 Python 实现的 MySQL 客户端库,用于在 Python 中连接和操作 MySQL 数据库。
DB-API 2.0 兼容: pymysql 遵循 Python 数据库 API 规范,使得在使用时更容易与其他数据库连接库切换。
对于作用以及API,与上述代码一致,只需要把包名替换即可!
运行前,先安装pymsql:pip install pymysql
修改的代码如下:
import pymysql
# 建立数据库连接
db_connection = pymysql.connect(
host="your_host", # 数据库主机地址
user="your_username", # 数据库用户名
password="your_password", # 数据库密码
database="your_database" # 数据库名称
)
最终截图如下:
由于pymysql
比mysql.connector
要更加常用(但两者代码又差不多),所以在此处科普其他的CRUD,现已有插入和查询
如果是删除数据,示例代码:
if "__main__" == __name__:
try:
# 创建游标对象
cursor = db_connection.cursor()
# 示例1: 执行删除
delete_query = "DELETE FROM test_student WHERE id = 9"
cursor.execute(delete_query)
# 提交事务
db_connection.commit()
# 执行 SQL 查询或操作
cursor.execute("SELECT * FROM test_student")
# 获取查询结果
result = cursor.fetchall()
for row in result:
print(row)
except:
db_connection.rollback();
finally:
# 关闭游标和连接
cursor.close()
db_connection.close()
截图如下:
增加一张表:
if "__main__" == __name__:
try:
# 创建游标对象
cursor = db_connection.cursor()
# 示例1: 创建一张表
create_query = """CREATE TABLE test_student1 (
username CHAR(20) NOT NULL,
age INT,
sex CHAR(1) )"""
cursor.execute(create_query)
# 示例1: 执行插入
insert_query = "INSERT INTO test_student1 (username,age,sex) VALUES (%s, %s, %s)"
data = ('manong', 18, 1)
cursor.execute(insert_query, data)
# 执行 SQL 查询或操作
cursor.execute("SELECT * FROM test_student1")
# 获取查询结果
result = cursor.fetchall()
for row in result:
print(row)
# 提交事务
db_connection.commit()
except:
db_connection.rollback();
finally:
# 关闭游标和连接
cursor.close()
db_connection.close()
截图如下:
数据库表如下: