Python学习笔记(13) --Mysql,Python关联数据库

传送门==>B站黑马python入门教程


目录


Mysql之前在学习Java时已完成学习

mysql学习记录


Python关联数据库

基础案例

pymysql

处理使用图形化工具之外,也可以使用编程语言执行SQL操作数据库,

在Python中,可使用pymysql完成对mysql数据库的操作

pip install pymysql

创建到mysql的数据库链接

python 复制代码
from pymysql import Connection

# 创建链接
conn = Connection(host="localhost",port=3306,user="root",password="123456",
                  database="python_study",charset="utf8")

# 链接数据库版本信息;
print (conn.get_server_info())

# 关闭
conn.close()

案例:测试非查询类型的SQL语句

powershell 复制代码
from pymysql import Connection

# 创建链接
conn = Connection(host="localhost",port=3306,user="root",password="123456",
                  database="python_study",charset="utf8")

# 链接数据库版本信息;
print (conn.get_server_info())

#获取游标对象
cursor = conn.cursor()
# 创建数据表
sql = "CREATE TABLE test_pymysql(id INT , info VARCHAR(255))"
cursor.execute(sql)

# 关闭
conn.close()

在数据库客户端查看,数据表已创建

案例:测试查询类型的SQL语句

python 复制代码
from pymysql import Connection

# 创建链接
conn = Connection(host="localhost",port=3306,user="root",password="123456",
                  database="python_study",charset="utf8")

# 链接数据库版本信息;
print (conn.get_server_info())

#获取游标对象
cursor = conn.cursor()
# 创建数据表
sql = "select * from test_pymysql"
cursor.execute(sql)

# 获取结果
results : tuple = cursor.fetchall()
for result in results:
    print(result)

# 关闭
conn.close()

案例:链接数据库且插入数据

python 复制代码
from pymysql import Connection

# 创建链接
conn = Connection(host="localhost",port=3306,user="root",password="123456",
                  database="python_study",charset="utf8")

#获取游标对象
cursor = conn.cursor()
# 创建数据表
sql = "insert into test_pymysql values(3,'Q3')"
cursor.execute(sql)

# 提交
conn.commit()
# 关闭
conn.close()

若在链接参数中指定autocommit=True 自动提交开启,

则不用在代码中执行 commit手动提交


综合案例


创建数据库

sql 复制代码
create table orders(
	order_date DATE,
	order_id VARCHAR(255),
	money INT,
	province VARCHAR(10)
)
python 复制代码
from file_define import TextFileReader, JsonFileReader
from data_define import Record
from pymysql import Connection

text_file_reader = TextFileReader("F:/pythonworkspace/startDemo/fileDemopath/2011年1月销售数据.txt")
json_file_reader = JsonFileReader("F:/pythonworkspace/startDemo/fileDemopath/2011年2月销售数据JSON.txt")

jan_data: list[Record] = text_file_reader.read_data()
feb_data: list[Record] = json_file_reader.read_data()
# 将2个月份的数据合并
all_data: list[Record] = jan_data + feb_data

# 构建MySQL链接对象
conn = Connection(
    host="localhost",
    port=3306,
    user="root",
    password="123456",
    database="python_study",
    autocommit=True
)
# 获得游标对象
cursor = conn.cursor()
# SQL
for record in all_data:
    sql = f"insert into orders(order_date, order_id, money, province) " \
          f"values('{record.date}', '{record.order_id}', {record.money}, '{record.province}')"
    # 执行SQL语句
    cursor.execute(sql)

# 关闭链接
conn.close()


相关推荐
岳麓丹枫00141 分钟前
PostgreSQL 中 pg_wal 目录里的 .ready .done .history 文件的生命周期
数据库·postgresql
寻星探路5 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
陌上丨7 小时前
Redis的Key和Value的设计原则有哪些?
数据库·redis·缓存
AI_56787 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
ValhallaCoder7 小时前
hot100-二叉树I
数据结构·python·算法·二叉树
执笔论英雄7 小时前
【大模型学习cuda】入们第一个例子-向量和
学习
ccecw7 小时前
Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错
数据库·mysql
wdfk_prog7 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
JH30737 小时前
达梦数据库与MySQL的核心差异解析:从特性到实践
数据库·mysql
数据知道8 小时前
PostgreSQL 核心原理:如何利用多核 CPU 加速大数据量扫描(并行查询)
数据库·postgresql