本文共 5093 字,大约阅读时间需要 16 分钟。
MySQL作为世界上最流行的关系型数据库管理系统之一,拥有强大的功能和灵活的配置选项。对于前端开发人员、后端开发人员以及数据库管理员来说,掌握MySQL的基础操作是必不可少的。本文将从连接数据库、创建表单、插入记录、查询记录等方面入手,帮助你快速上手MySQL数据库操作。
在开始操作之前,需要先安装MySQL数据库客户端。可以通过以下两种方式安装:
使用conda: 在终端中输入以下命令安装:
conda install pymysql
注意:确保已经安装了Anaconda或Canopy环境。
使用pip: 如果你不想安装Anaconda,可以使用 pip 命令进行安装:
pip install --user pymysql
以上命令将为你安装最新版本的 pymysql 客户端库。
安装完成后,请确保 MySQL 服务已经启动,并且有一个名为 test 的数据库存在。接下来,我们将学习如何通过代码连接到MySQL数据库。
在Python 中,使用 pymysql 库可以轻松连接到MySQL 数据库。以下是连接数据库的示例代码:
from pymysql import *def connect_db(): db = connect("localhost", "root", "your_password", "test", charset='utf8') return dbdb = connect_db()print(type(db)) connect 方法的参数依据数据库类型有所不同。对于本地数据库,通常连接字符串为 localhost。charset 参数用于指定数据库的字符编码,建议设置为 utf8 以支持多种语言字符。在操作数据库时,掌握以下几个关键方法是必不可少的:
连接数据库: 使用 connect 方法获取数据库连接对象。连接对象支持执行 SQL 语句、处理结果集以及管理事务(事务)。
获取操作数据库的Cursor对象: Cursor 对象相当于数据库操作的控制台。通过它,可以执行 SQL 语句、处理结果集以及管理事务。
执行 SQL 语句: 使用 execute 方法执行 SQL 语句。该方法可以执行多种类型的 SQL 语句,包括 INSERT、UPDATE、DELETE 和 SELECT。
提交事务: 在对数据库进行修改后,使用 commit 方法提交事务。提交事务会将所有修改permanentize到数据库中。
回滚事务: 如果在执行过程中遇到错误,使用 rollback 方法可以将事务回滚,确保数据库恢复到修改前的状态。
以下是一些常见的 SQL 操作示例:
def create_table(db): cursor = db.cursor() sql = """CREATE TABLE persons ( id INT PRIMARY KEY NOT NULL, name TEXT NOT NULL, age INT NOT NULL, address CHAR(50), salary REAL )""" try: cursor.execute(sql) db.commit() return True except: db.rollback() return False
def insert_records(db): cursor = db.cursor() try: cursor.execute('DELETE FROM persons') cursor.execute(""" INSERT INTO persons (id, name, age, address, salary) VALUES (1, 'Paul', 32, 'California', 20000.00) """) cursor.execute(""" INSERT INTO persons (id, name, age, address, salary) VALUES (2, 'Allen', 25, 'Texas', 15000.00) """) cursor.execute(""" INSERT INTO persons (id, name, age, address, salary) VALUES (3, 'Teddy', 23, 'Norway', 20000.00) """) cursor.execute(""" INSERT INTO persons (id, name, age, address, salary) VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00) """) db.commit() return True except Exception as e: print(e) db.rollback() return False def select_records(db): cursor = db.cursor() sql = 'SELECT name, age, salary FROM persons ORDER BY age DESC' cursor.execute(sql) results = cursor.fetchall() print(results) fields = ['name', 'age', 'salary'] records = [] for row in results: records.append(dict(zip(fields, row))) return json.dumps(records)
以下是一个完整的代码示例,展示了从创建表单到查询记录的完整流程:
from pymysql import *import jsondef connect_db(): db = connect("localhost", "root", "your_password", "test", charset='utf8') return dbdef create_table(db): cursor = db.cursor() sql = """CREATE TABLE persons ( id INT PRIMARY KEY NOT NULL, name TEXT NOT NULL, age INT NOT NULL, address CHAR(50), salary REAL )""" try: cursor.execute(sql) db.commit() return True except: db.rollback() return Falsedef insert_records(db): cursor = db.cursor() try: cursor.execute('DELETE FROM persons') cursor.execute(""" INSERT INTO persons (id, name, age, address, salary) VALUES (1, 'Paul', 32, 'California', 20000.00) """) cursor.execute(""" INSERT INTO persons (id, name, age, address, salary) VALUES (2, 'Allen', 25, 'Texas', 15000.00) """) cursor.execute(""" INSERT INTO persons (id, name, age, address, salary) VALUES (3, 'Teddy', 23, 'Norway', 20000.00) """) cursor.execute(""" INSERT INTO persons (id, name, age, address, salary) VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00) """) db.commit() return True except Exception as e: print(e) db.rollback() return Falsedef select_records(db): cursor = db.cursor() sql = 'SELECT name, age, salary FROM persons ORDER BY age DESC' cursor.execute(sql) results = cursor.fetchall() print(results) fields = ['name', 'age', 'salary'] records = [] for row in results: records.append(dict(zip(fields, row))) return json.dumps(records)if create_table(db): print('成功创建persons表')else: print('persons表已经存在')if insert_records(db): print('成功插入记录')else: print('插入记录失败')print(select_records(db))db.close() 在运行上述代码之前,请确保:
test 的 MySQL 数据库已经存在。root,并且密码已更改为 your_password。通过以上代码示例,你可以轻松地创建和操作MySQL 数据库,完成基础的 CRUD(增删改查)操作。如果你在操作过程中遇到任何问题,请务必检查数据库连接参数和 SQL 语句是否正确。
转载地址:http://slofk.baihongyu.com/