目录
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 文件操作
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()
小结:
- Python中使用pymysql第三方库来操作MySQL;
- 安装:
pip install pymysql
- 安装:
- 获取链接对象:
from pymysql import Connection
导包;- Connection(主机,端口,账户,密码)即可得到链接对象;
- 链接对象
.close()
关闭和MySQL数据库的连接
- 执行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 数据内容
- 6月份数据是普通文本,使用逗号分割数据记录,从前到后分别是(日期,订单id,销售额,销售省份)
- 7月份数据是JSON数据,同样包含(日期,订单id,销售额,销售省份)
- 数据参考:Python第二语言(十一、Python面向对象(下))-CSDN博客
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 实现步骤
- 读取数据:使用面向对象代码案例;
- 封装数据对象:使用面向对象代码案例;
- 构建数据库连接;
- 写入数据库;
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()