Python第二语言(十二、SQL入门和实战)

目录

1. Python中使用MySQL

1.1 pymysql第三方库使用MySQL

1.2 连接MySQL

1.3 操作数据库,创建表

1.4 执行查询数据库语句

2. python中MySQL的插入语句

2.1 commit提交

2.2 自动提交

3. pymysql案例

3.1 数据内容

3.2 DDL定义

3.3 实现步骤

3.4 文件操作


导航:

Python第二语言(一、Python start)-CSDN博客

Python第二语言(二、Python语言基础)-CSDN博客

Python第二语言(三、Python函数def)-CSDN博客

Python第二语言(四、Python数据容器)-CSDN博客

Python第二语言(五、Python文件相关操作)-CSDN博客

Python第二语言(六、Python异常)-CSDN博客

Python第二语言(七、Python模块)-CSDN博客

Python第二语言(八、Python包)-CSDN博客

Python第二语言(九、Python第一阶段实操)-CSDN博客

Python第二语言(十、Python面向对象(上))-CSDN博客

Python第二语言(十一、Python面向对象(下))-CSDN博客

Python第二语言(十二、SQL入门和实战)-CSDN博客

Python第二语言(十三、PySpark实战)-CSDN博客

Python第二语言(十四、高阶基础)-CSDN博客

1. Python中使用MySQL

1.1 pymysql第三方库使用MySQL
  • 除了使用图形化工具以外,我们也可以使用编程语言来执行SQL从而操作数据库;
  • 在Python中,使用第三方库:pymysql来完成对MySQL数据库的操作;
  • 安装 pip install pymysql;
1.2 连接MySQL
# 导入pymysql包
from pymysql import Connection

# 获取到MySQL数据库连接对象
conn = Connection(
    host='127.0.0.1',
    port=13306,
    user='root',
    password='123456',
)

print(conn.get_server_info())
conn.close()

1.3 操作数据库,创建表
from pymysql import Connection
# 1.获取MySQL连接
coon = Connection(
    host='localhost',
    port=3306,
    user='root',
    password='123456'
)
# 2.获取游标对象
cursor = coon.cursor()
coon.select_db("demo")  # 3.use数据库
# 4.使用游标对象,执行sql
cursor.execute("CREATE TABLE test_pymysql(id INT, info VARCHAR(225))")
# 5.关闭数据库连接
coon.close()

1.4 执行查询数据库语句

数据库数据:

代码:

from pymysql import Connection

# 1.获取MySQL连接
coon = Connection(
    host='localhost',
    port=3306,
    user='root',
    password='123456'
)
# 2.获取游标对象
cursor = coon.cursor()
coon.select_db("demo")  # 3.use数据库
# 4.使用游标对象,执行sql
execute = cursor.execute("SELECT * FROM test_pymysql")
# 获取查询结果
results: tuple = cursor.fetchall()
for r in results:
    print(r)
# 5.关闭数据库连接
coon.close()

小结:

  1. Python中使用pymysql第三方库来操作MySQL;
    • 安装:pip install pymysql
  2. 获取链接对象:
    • from pymysql import Connection 导包;
    • Connection(主机,端口,账户,密码)即可得到链接对象;
    • 链接对象.close()关闭和MySQL数据库的连接
  3. 执行SQL查询:
    • 通过连接对象调用cursor()方法,得到游标对象;
    • 游标对象.execute()执行SQL语句;
    • 游标对象.fetchall()得到全部的查询结果封装从元组内

2. python中MySQL的插入语句

2.1 commit提交

在pymysql中,执行数据插入或其它产生数据更改SQL语句时,默认是需要commit提交更改的;

# 执行sql
cursor.execute("INSERT INTO test_pymysql VALUES(6, '这是插入')")
# 提交
coon.commit()

2.2 自动提交

autocommit=True # 设置自动提交

插入结果:

3. pymysql案例

  • 案例需求:使用python语言,读取数据,并将数据写入到MySQL;
3.1 数据内容

3.2 DDL定义

数据库名:demo

建表语句:

CREATE TABLE `orders` (
  `id` int(11) NOT NULL COMMENT '主键',
  `date_time` datetime DEFAULT NULL COMMENT '日期',
  `order_id` varchar(40) DEFAULT NULL COMMENT '订单id',
  `money` int(4) DEFAULT NULL COMMENT '销售额',
  `province` varchar(40) DEFAULT NULL COMMENT '销售省份',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3.3 实现步骤
  1. 读取数据:使用面向对象代码案例;
  2. 封装数据对象:使用面向对象代码案例;
  3. 构建数据库连接;
  4. 写入数据库;
3.4 文件操作

1. all_data数据:

2. 开发工具配置数据库:

3. 遇到ModuleNotFoundError: No module named 'data_define'

需要使用from my_package.orm_data_plan.data_define import Record这个包路径;

4. 插入语句构建:

if __name__ == '__main__':
    text_file_reader = TextFileReader("../file/2024年6月数据")
    json_file_reader = JsonFileReader("../file/2024年7月销售数据JSON")
    data = text_file_reader.read_data()
    data1 = json_file_reader.read_data()
    all_data = data + data1

    sql = ""
    id = 0
    for record in all_data:
        id += 1
        sql = f"INSERT INTO orders VALUES({id}, '{record.date}', '{record.order_id}', {record.money}, '{record.province}')"
        print(sql)

5. 插入案例

  • 解释:获取数据库连接,设置自动提交,配置创建表语句,IF NOT EXISTS表不存在就创建,读取两个文件的内容并合并,加上表id,组装sql,使用execute执行插入语句;
from pymysql import Connection

from my_package.orm_data_plan.file_define import TextFileReader, JsonFileReader

coon = Connection(
    host='localhost',
    port=3306,
    user='root',
    password='123456',
    autocommit=True
)

cursor = coon.cursor()
coon.select_db("demo")

# 创建表的SQL语句
create_table_sql = """
        CREATE TABLE IF NOT EXISTS  `orders` (
            `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
            `date_time` datetime DEFAULT NULL COMMENT '日期',
            `order_id` varchar(40) DEFAULT NULL COMMENT '订单id',
            `money` int(11) DEFAULT NULL COMMENT '销售额',  -- 更改为更合适的int(11)
            `province` varchar(40) DEFAULT NULL COMMENT '销售省份',
            PRIMARY KEY (`id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
        """
# 执行创建表的SQL语句
cursor.execute(create_table_sql)

text_file_reader = TextFileReader("../file/2024年6月数据")
json_file_reader = JsonFileReader("../file/2024年7月销售数据JSON")
data = text_file_reader.read_data()
data1 = json_file_reader.read_data()
all_data = data + data1

sql = ""
id = 0
for record in all_data:
    id += 1
    sql = f"INSERT INTO orders VALUES({id}, '{record.date}', '{record.order_id}', {record.money}, '{record.province}')"
    print(sql)
    # SQL插入语句
    cursor.execute(sql)

coon.close()

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值