【Python】【技能树评测】【05】数据库操作详细含源码:

前言:

CSDN技能树数据库的操作上来就执行database的sql语句,但是,还没有安装咋办呢,所以,本章借鉴了一个CSDN有关数据库的安装先从头安装一下。
而且,CSND给出的例子也是编译不通啊。于是我又在Pycharm上编译了一下,源码贴在本章里面了。

1 数据库的安装:

1.1 下载安装包

Mysql下载地址:
Mysql8.0.29下载地址

1.2 解压

下载后,解压就可以用了:
在这里插入图片描述
我解压到下面地址:

D:\mysql

1.3 配置初始化ini文件:

放在安装目录下:

> [mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录   ----------是你的文件路径-------------
basedir=D:\mysql
# 设置mysql数据库的数据的存放目录  ---------是你的文件路径data文件夹自行创建
datadir=D:\mysql\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4

1.4 执行基本数据指令

1.4.1 以管理员身份打开CMD
1.4.2 构建自己的数据库
1.4.2.1 进入刚才解压配置的目录
D:\>cd mysql
D:\mysql>cd bin
1.4.2.2 初始化并安装数据库服务

在bin目录初始化数据库服务:

D:\mysql\bin>mysqld --initialize --console
2022-06-26T01:22:23.092877Z 0 [System] [MY-013169] [Server] D:\mysql\bin\mysqld.exe (mysqld 8.0.29) initializing of server in progress as process 15296
2022-06-26T01:22:23.260962Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-06-26T01:22:34.420053Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-06-26T01:22:58.116447Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: jpy_uI2l79tv

安装mysql

D:\mysql\bin>mysqld --install mysql
Service successfully installed.

启动mysql

D:\mysql\bin>net start mysql
mysql 服务正在启动 ....
mysql 服务已经启动成功。

【现在,我们已经启动了一个默认的数据库服务,现在要改成我们自己的服务,第一步就是改密码】

1.4.2.3 更改根密码
D:\mysql\bin>mysql -uroot -p
Enter password: ************
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.29
Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpassword';
Query OK, 0 rows affected (0.19 sec)

【在yourpassword,填入你自己的密码】

1.4.2.4 构建自己的数据库:
mysql> create database hsyPythontest01;
Query OK, 1 row affected (0.21 sec)
1.4.2.5 显示自己的数据库:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| hsypythontest01    |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

【这里,我们已经在windows系统里面安装了一个简单mysql数据库服务,并且建了一个空的数据库hsypythontest01】

2 在Pycharm中运行运行数据库:

我们现在只是在操作系统里面构建了数据库,还没有吧python的编译环境连接起来,这一节做这个事情。

2.1 在Pycharm上确认一下,我们的数据库模块已经安装了:

在这里插入图片描述

2.2 在Pycharm上运行1 - 连接并插入一个表【源码】

话不多说,上源码:【这里我们详细说一下这些代码的意义】

# 引入python mysql 数据库模块
import pymysql
print("python database demo 01")
# 我们创建一个mysql 和python的连接db
# 这里host 我们选localhost,CSDN的培训视频里面估计和这个不一样,不知道李老师是哪个版本
# user 一般选root,password是我自己设置的
db = pymysql.connect(host='localhost', user='root', password='1234', database='hsypythontest01')
#print (db)
cursor = db.cursor()
# 打印的话都是PC的地址信息
print(cursor)
# curcur.execute("creat talbe book (\
#             id varchar(20) PRIMARY KEY,\
#             name varchar(20)) ")


# 使用 execute() 方法执行 SQL 的语句,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

# 使用预处理语句创建表
# 这里是纯的sql的语句
# CREAT生成,TABLE一个表,表的名字EMPLOYEE,
# 这个表里面有5列,分别弄出来,然后如果你需要主键,需要跟一个primary key在列后,我们这里没有设置
# CHAR(20)表述列的字符为20个字符的长度
# NOT NULL表述非空表格
sql = """CREATE TABLE EMPLOYEE (
         FIRST_NAME  CHAR(20) NOT NULL,
         LAST_NAME  CHAR(20),
         AGE INT,  
         SEX CHAR(1),
         INCOME FLOAT )"""
# 执行这个sql语句
cursor.execute(sql)
# 关闭数据库连接
db.close()

【验证一下】
我们登录一下刚才创建的空数据库,登录的地方可以是刚才的CMD窗口,也可以在Pycharm里面的Terminal里面,我们这次用Pycharm的Terminal里面;
在这里插入图片描述
登录需要敲入密码:1234

D:\mysql>mysql -uroot -p 

选择数据库

use hsypythontest01

进入mysql后,然后,可以验证刚才我们创建的表:

mysql> show tables;
Empty set (0.13 sec)

mysql> show tables;
+---------------------------+
| Tables_in_hsypythontest01 |
+---------------------------+
| employee                  |
+---------------------------+
1 row in set (0.01 sec)

然后,我们显示一下这个表,看看里面啥内容

mysql> describe employee;
+------------+----------+------+-----+---------+-------+
| Field      | Type     | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+-------+
| FIRST_NAME | char(20) | NO   |     | NULL    |       |
| LAST_NAME  | char(20) | YES  |     | NULL    |       |
| AGE        | int      | YES  |     | NULL    |       |
| SEX        | char(1)  | YES  |     | NULL    |       |
| INCOME     | float    | YES  |     | NULL    |       |
+------------+----------+------+-----+---------+-------+
5 rows in set (0.59 sec)

2.1 遇到的问题1

没有安装和连接数据库

在python的环境中安装数据库:

(PythonDemoProjects) D:\BaiduNetdiskWorkspace\PythonDemoProjects>pip install pymysql
Collecting pymysql
  Downloading PyMySQL-1.0.2-py3-none-any.whl (43 kB)
     |████████████████████████████████| 43 kB 700 kB/s
Installing collected packages: pymysql
Successfully installed pymysql-1.0.2

2.1.1 连接报错

D:\ProgramData\Anaconda3\envs\PythonDemoProjects\python.exe D:/BaiduNetdiskWorkspace/PythonDemoProjects/PythonDemoDataBase01.py
python database demo 01
Traceback (most recent call last):
File “D:\BaiduNetdiskWorkspace\PythonDemoProjects\PythonDemoDataBase01.py”, line 3, in
db = pymysql.connect(host=‘127.0.0.1’, user=‘root’, password=‘8661’, database=‘hsypythontest01’)
File “D:\ProgramData\Anaconda3\envs\PythonDemoProjects\lib\site-packages\pymysql\connections.py”, line 353, in init
self.connect()
File “D:\ProgramData\Anaconda3\envs\PythonDemoProjects\lib\site-packages\pymysql\connections.py”, line 633, in connect
self._request_authentication()
File “D:\ProgramData\Anaconda3\envs\PythonDemoProjects\lib\site-packages\pymysql\connections.py”, line 932, in _request_authentication
auth_packet = _auth.caching_sha2_password_auth(self, auth_packet)
File “D:\ProgramData\Anaconda3\envs\PythonDemoProjects\lib\site-packages\pymysql_auth.py”, line 265, in caching_sha2_password_auth
data = sha2_rsa_encrypt(conn.password, conn.salt, conn.server_public_key)
File “D:\ProgramData\Anaconda3\envs\PythonDemoProjects\lib\site-packages\pymysql_auth.py”, line 143, in sha2_rsa_encrypt
raise RuntimeError(
RuntimeError: ‘cryptography’ package is required for sha256_password or caching_sha2_password auth methods
Process finished with exit code 1

【缺少cryptography模块】

(PythonDemoProjects) D:\BaiduNetdiskWorkspace\PythonDemoProjects>pip install cryptography
Collecting cryptography
  Downloading cryptography-37.0.2-cp36-abi3-win_amd64.whl (2.4 MB)
     |████████████████████████████████| 2.4 MB 172 kB/s
Collecting cffi>=1.12
  Downloading cffi-1.15.0-cp39-cp39-win_amd64.whl (180 kB)
     |████████████████████████████████| 180 kB 48 kB/s
Collecting pycparser
  Downloading pycparser-2.21-py2.py3-none-any.whl (118 kB)
     |████████████████████████████████| 118 kB 226 kB/s
Installing collected packages: pycparser, cffi, cryptography
Successfully installed cffi-1.15.0 cryptography-37.0.2 pycparser-2.21

参考:

1.1 参考博客:

mysql8.0.25安装配置教程(windows 64位)最详细

Python案例参考:

python的sql案例-取自python的案例集

1.2 数据库管理工具下载资源:

navicat
datagrip

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Franklin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值