MySQL(七)——Python操作MySQL基础使用

这篇具有很好参考价值的文章主要介绍了MySQL(七)——Python操作MySQL基础使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上期文章

MySQL(六)——事务



数据库介绍

数据库是指数据存储的库,作用就是组织数据并存储数据

按照库->表->数据 三个层级进行组织

数据库(软件)提供数据组织存储的能力

SQL语句则是操作数据、数据库的工作语言

MySQL入门使用

打开命令提示符程序,输入mysql -u root -p

  • show databases 查看有哪些数据库
  • use 数据库名 使用某个数据库
  • show tables 查看数据库内有哪些表
  • exit 退出MySQL的命令行环境

SQL基础

SQL语言分类

SQL:Structured Query Language,结构化查询语言,用于访问和处理数据库的标准的计算机语言

  • 数据定义 DDL Data Definition Language:库的创建删除、表的创建删除等
  • 数据操纵 DML Data Manipulation Language:新增数据、删除数据、修改数据等
  • 数据控制 DCL Data Control Language:新增用户、删除用户、密码修改、权限管理等
  • 数据查询 DQL Data Query Language:基于需求查询和计算数据

SQL语法特征

  • SQL语言大小写不敏感
  • SQL可以单行或多行书写,最后以;号结束
  • 单行注释:-- 注释内容(–后面一定要有一个空格)
  • 单行注释:# 注释内容(#后面可以不加空格,推荐加上)
  • 多行注释:/* 注释内容 */

DDL

-- 查看数据库
SHOW DATABASES;
-- 使用数据库
USE 数据库名称;
-- 创建数据库 字符集UTF8
CREATE DATABASE 数据库名称 [CHARSET UTF8];
-- 删除数据库
DROP DATABASE 数据库名称;
-- 查看当前使用的数据库
SELECT DATABASE();
-- 查看有哪些表
SHOW TABLES;
-- 删除表
DROP TABLE 表名称;
DROP TABLE IF EXISTS 表名称;
-- 创建表
CREATE TABLE 表名称(
	列名称 列类型,
	列名称 列类型,
	......
);

列类型有
int:整数
float:浮点数
varchar(长度):文本,长度为数字,做最大长度限制
date:日期类型
timestamp:时间戳类型

DML

/*数据添加*/
INSERT INTO[(1,2, ..., 列N)] VALUES(1,2,..., 值N)[,(1,2,..., 值N), ..., (1,2,..., 值N)]
/*数据删除*/
DELETE FROM 表名称 [WHERE 条件判断];
/*数据更新*/
UPDATE 表名 SET=[WHERE 条件判断];

DQL

/*基础数据查询*/
SELECT 字段列表|* FROM;
/*过滤查询的语法*/
SELECT 字段列表|* FROMWHERE 条件判断;
/*分组聚合*/
SELECT 字段|聚合函数 FROM[WHERE 条件] GROUP BY/*结果排序*/
SELECT|聚合函数|* FROMWHERE ...
GROUP BY ...
ORDER BY ...[ASC|DESC]
/*结果分页限制*/
SELECT|聚合函数|* FROMWHERE ...
GROUP BY ...
ORDER BY ...[ASC|DESC]
LIMIT n[, m]

聚合函数:

  • SUM 列 求和
  • AVG 列 求平均值
  • MIN 列 求最小值
  • MAX 列 求最大值
  • COUNT 列|* 求数量

注意:GROUP BY出现哪个列,哪个列才能出现在SELECT中的非聚合中

执行顺序:FROM->WHERE->GROUP BY和聚合函数->SELECT->ORDER BY->LIMIT

Python & MySQL

基础使用

创建到MySQL的数据库链接

from pymysql import Connection
# 获取到MySQL数据库的链接对象
conn = Connection(
    host='localhost',   # 主机名/IP地址
    port=3306,  # 端口,默认3306
    user='root',    # 账户名
    password='SYQ1338751!'  # 密码
)
# 打印MySQL数据库软件信息
# print(conn.get_server_info())

# 获取游标对象
cursor = conn.cursor()

# 先选择数据库
conn.select_db('test') 
 
# 使用游标对象,执行非查询性质的sql语句
cursor.execute('create table test_pymysql(id int, info varchar(255))')

# 使用游标对象,执行查询性质的sql语句
cursor.execute('select * from student')
# 获取查询结果
results: tuple = cursor.fetchall()
for r in results:\
    print(r)

# 关闭到数据库的链接
conn.close()

总结

1、如何获取链接对象?

  • from pymysql import Connection 导包
  • Connection(主机,端口,账户,密码)即可得到链接对象
  • 链接对象.close()关闭和MySQL数据库的连接

2、如何执行SQL查询?

通过连接对象调用cursor()方法,得到游标对象

  • 游标对象.execute()执行SQL语句
  • 游标对象.fetchall()得到全部的查询结果封装入元组内

数据插入

pymysql在执行数据插入或其他产生数据更改的SQL语句时,默认是需要提交更改的,即需要通过代码“确认”这种更改行为

手动commit

通过链接对象.commit()即可确认此行为

from pymysql import Connection
# 获取到MySQL数据库的链接对象
conn = Connection(
    host='localhost',   # 主机名/IP地址
    port=3306,  # 端口,默认3306
    user='root',    # 账户名
    password='SYQ1338751!'  # 密码
)
# 打印MySQL数据库软件信息
# print(conn.get_server_info())

# 获取游标对象
cursor = conn.cursor()

# 先选择数据库
conn.select_db('itheima')  

# 执行sql
cursor.execute("insert into account values (3, '王五', 2000)")

# 通过commit提交确认
conn.commit()

# 关闭到数据库的链接
conn.close()

自动commit

conn = Connection(
    host='localhost',   # 主机名/IP地址
    port=3306,  # 端口,默认3306
    user='root',    # 账户名
    password='SYQ1338751!',  # 密码
    autocommit=True  # 设置自动提交
)

总结

1、什么是commit提交?
pymysql库在执行对数据库所有修改操作的行为时,是需要通过链接对象的commit成员方法来进行确认的

只有确认的修改,才能生效

2、如何自动提交呢?文章来源地址https://www.toymoban.com/news/detail-814286.html

conn = Connection(
    host='localhost',   # 主机名/IP地址
    port=3306,  # 端口,默认3306
    user='root',    # 账户名
    password='SYQ1338751!',  # 密码
    autocommit=True  # 设置自动提交
)

综合案例

from file_define import *
from data_define import *
from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import ThemeType
from pyecharts.faker import Faker
from pymysql import Connection

text_file_reader = TextFileReader('2011年1月销售数据.txt')
json_file_reader = JsonFileReader('2011年2月销售数据JSON.txt')

jan_data: list[Record] = text_file_reader.read_data()
feb_data: list[Record] = json_file_reader.read_data()
# 两个月份的数据合并为一个list存储
all_data: list[Record] = jan_data + feb_data

# 获取到MySQL数据库的链接对象
conn = Connection(
    host='localhost',   # 主机名/IP地址
    port=3306,  # 端口,默认3306
    user='root',    # 账户名
    password='SYQ1338751!',  # 密码
    autocommit=True  # 设置自动提交
)

# 获取游标对象
cursor = conn.cursor()
# 先选择数据库
conn.select_db('py_sql')
# 组织SQL语句
for record in all_data:
    sql = f"insert into orders(order_date, order_id, money, province) values ('{record.date}','{record.order_id}', {record.money}, '{record.province}')"
    # 执行SQl语句
    cursor.execute(sql)

# 关闭MySQL链接对象
conn.close()
import decimal

from file_define import *
from data_define import *
from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import ThemeType
from pyecharts.faker import Faker
from pymysql import Connection
import json

from datetime import date, datetime

from datetime import date, datetime

class ComplexEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, datetime):
            return obj.strftime('%Y-%m-%d %H:%M:%S')
        elif isinstance(obj, date):
            return obj.strftime('%Y-%m-%d')
        else:
            return json.JSONEncoder.default(self, obj)


text_file_reader = TextFileReader('2011年1月销售数据.txt')
json_file_reader = JsonFileReader('2011年2月销售数据JSON.txt')

jan_data: list[Record] = text_file_reader.read_data()
feb_data: list[Record] = json_file_reader.read_data()
# 两个月份的数据合并为一个list存储
all_data: list[Record] = jan_data + feb_data

# 获取到MySQL数据库的链接对象
conn = Connection(
    host='localhost',   # 主机名/IP地址
    port=3306,  # 端口,默认3306
    user='root',    # 账户名
    password='SYQ1338751!',  # 密码
    autocommit=True  # 设置自动提交
)

# 获取游标对象
cursor = conn.cursor()
# 先选择数据库
conn.select_db('py_sql')
# 组织SQL语句
# for record in all_data:
#     sql = f"insert into orders(order_date, order_id, money, province) values ('{record.date}','{record.order_id}', {record.money}, '{record.province}')"
#     # 执行SQl语句
#     cursor.execute(sql)

# 使用游标对象,执行查询性质的sql语句
cursor.execute('select * from orders')
# 获取查询结果
results: tuple = cursor.fetchall()
results_list = list(results)
print(results_list)

with open('example.json.txt', 'w') as f:
    for item in results_list:
        a = {}
        a['date'] = item[0]
        a['order_id'] = item[1]
        a['money'] = item[2]
        a['province'] = item[3]

        r_json = json.dumps(a, cls=ComplexEncoder, ensure_ascii=False)
        f.write(r_json+'\n')


# 关闭MySQL链接对象
conn.close()

到了这里,关于MySQL(七)——Python操作MySQL基础使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL基础篇补充 | 多表查询中使用SQL99实现7种JOIN操作、SQL99语法新特性

    目录 一:多表查询中使用SQL99实现7种JOIN操作  二:SQL99语法新特性 1. 自然连接Natural 2. USING连接 在多表查询中,除了遇到最多的内连接、左外连接和右外连接,还有其它的连接方式;接下来就聊聊其它的连接方式,如下图:  ​​​​​​ 并且在正式讲解之前,需要先了解

    2024年02月03日
    浏览(32)
  • Python 操作 MySQL 数据库:使用 mysql-connector-python 库

    在现代应用程序中,与数据库的交互是不可或缺的一部分。Python 提供了许多库来连接和操作各种数据库,其中最常用的之一就是 mysql-connector-python 。本篇博客将介绍如何使用 Python 操作 MySQL 数据库,包括连接数据库、创建表、插入数据、查询数据以及更新和删除数据等操作。

    2024年02月03日
    浏览(38)
  • Python MySQL 数据库查询:选择数据、使用筛选条件、防止 SQL 注入

    要从MySQL中的表格中选择数据,请使用\\\"SELECT\\\"语句: 示例选择\\\"customers\\\"表格中的所有记录,并显示结果: 注意 :我们使用 fetchall() 方法,该方法从上次执行的语句中获取所有行。 要仅选择表格中的某些列,请使用\\\"SELECT\\\"语句,后跟列名: 示例仅选择name和address列: 如果您只对

    2024年02月05日
    浏览(70)
  • python使用SQLAlchemy进行mysql的ORM操作

    现在很多的企业进行后端开发时,程序员在分析完业务后,会使用Java的SpringBoot或者Python的Django、Flask等网络框架进行项目开发。在这些网络框架业务逻辑代码编写的过程中,很大概率会需要使用到MySQL数据库,但是原生的SQL语句又存在被SQL注入的风险,而且在复杂的查询时,

    2024年02月07日
    浏览(41)
  • python3使用pymsql操作mysql数据库

    操作系统 :Windows 10_x64 python版本 :3.9.2 pymysql版本: 1.0.2 MySQL版本: 5.7.38   之前写过一篇关于python操作mysql数据库的文章: https://www.cnblogs.com/MikeZhang/p/pythonOptMysql20170703.html 当时是基于python 2.7 和 mysql 5.5来整理的,但目前python 2.7已经不再维护,主流的是python 3,今天基于pyt

    2024年02月05日
    浏览(48)
  • 【100天精通python】Day32:使用python操作数据库_MySQL下载、安装、配置、使用实战

    目录  专栏导读  1 MySQL概述 2 MySQL下载安装 2.1 下载  2.2 安装 2.3 配置

    2024年02月12日
    浏览(36)
  • 使用Python进行数据库连接与操作SQLite和MySQL【第144篇—SQLite和MySQL】

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在现代应用程序开发中,与数据库进行交互是至关重要的一环。Python提供了强大的库来连接和操作各种类型的数据库,其中包括SQLite和MySQL。

    2024年03月27日
    浏览(45)
  • 【Mysql】万字长文带你快速掌握数据库基础概念及SQL基本操作

    为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 (博客的参考源码可以在我主页的资源里找到,如果在学习的

    2024年02月15日
    浏览(44)
  • 完全从零Java自学系列【入门篇】(第四课:Mysql服务端安装&使用客户端操作数据库&初识SQL基础操作&Java中使用第三方包&Java数据库操作&初步理解面相对象真正的意义之桥接设计模式)

      数据库是专门用来存储一系列集合数据的地方。所有的文件都可以被称之为库,当应用场景没那么复杂的时候,简单的应用程序用文本就可以了。数据库的意义是为了设计更好的保障数据安全(如多线程操作)、数据一致、索引(如何在庞大的数据中快速查找)等等一系

    2024年02月21日
    浏览(45)
  • 【Python】Python操作MySQL详解——PyMySQL

    Python标准数据库规范为 DB-API, DB-API定义了一系列必须的对象和数据库操作方式,以便为各种数据库系统和数据库访问程序提供一致的访问接口。 开发人员将接口封装成不同的数据库操作模块,不同的数据库需要不同数据库操作模块,例如,MySQL数据库,它对应以下操作模块

    2024年02月02日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包