鲶鱼的忧郁 发表于 2023-5-18 17:20

【Python笔记(3.+)】Python记录笔记

#### **【Python笔记(3.+)】Python记录笔记**
> ### **本文全是本人自己编写**

>> 这边是目录索引,有点长,再截图中显示了就。
>> 后面会上传`Python+Selenium/appium+pytest/mysql/`等笔记文件

1. !(https://ennjusafe.oss-cn-beijing.aliyuncs.com/1.png)
2. !(https://ennjusafe.oss-cn-beijing.aliyuncs.com/2.png)
3. !(https://ennjusafe.oss-cn-beijing.aliyuncs.com/3.png)
4. !(https://ennjusafe.oss-cn-beijing.aliyuncs.com/4.png)
5. !(https://ennjusafe.oss-cn-beijing.aliyuncs.com/5.png)

>> **有问题的话可以回帖!**

#### 先将MySQL的一些操作贴出来,大家可以操作下!

> 使用的驱动可以是`mysql-connector-python`
> 里面有基本操作:(CRUD、事务处理、预编译)

**Demo01**

```python
'''=================================================
@Project -> File   :pythonStudy -> Db_Demo01
@IDE    :PyCharm
@AuThor :Mr.Shi
@date   :2021/12/13 20:26
@desc   :
=================================================='''
import sys

import mysql.connector# 先安装mysql-connector   或者安装mysql-connector-python
'''
1、导入数据库连接时需要的驱动
2、编写连接数据库所需要的配置文件信息,使用的字典序列
3、执行连接
4、测试结果
5、关闭连接释放资源
6、退出程序
'''

# 创建链接数据库 使用字典序列 编写数据库连接配置文件
config = {'host': '127.0.0.1',# 默认127.0.0.1
          'user': 'root',
          'password': 'root',
          'port': 3306,# 默认即为3306
          'database': 'examtest',
          'charset': 'utf8',# 默认即为utf8,
          # 将数据库的 密码编码指定为 最新的 或者说使用 -python的驱动
          'auth_plugin': 'mysql_native_password',
          }
cnn = None
try:
    # 连接 数据库 传递 可变长参数字典使用 **
    cnn = mysql.connector.connect(**config)# connect方法加载config的配置进行数据库的连接,完成后用一个变量进行接收
except mysql.connector.Error as e:
    print('数据库链接失败!', str(e))
else:
    print('success!')
finally:
    cnn.close()#关闭数据库链接

sys.exit()
```

**Demo02**

```python
'''=================================================
@Project -> File   :pythonStudy -> Db_Demo01
@IDE    :PyCharm
@Author :Mr.Shi
@Date   :2021/12/13 20:26
@Desc   :
=================================================='''
import sys

import mysql.connector# 先安装mysql-connector

# 创建链接数据库
cnn = None
try:
    cnn = mysql.connector.connect(
      host='127.0.0.1',# 默认127.0.0.1
      user='root',
      password='root',
      port=3306,# 默认即为3306
      database='examtest',
      charset='utf8',# 默认即为utf8,
      auth_plugin='mysql_native_password'
    )# connect方法加载config的配置进行数据库的连接,完成后用一个变量进行接收

except mysql.connector.Error as e:
    print('数据库链接失败!', str(e))
else:
    print('success!')
finally:
    cnn.close()
sys.exit()
```

### 查询SQL

#### 无参查询

```python
'''=================================================
@Project -> File   :pythonStudy -> Db_Demo01
@IDE    :PyCharm
@Author :Mr.Shi
@Date   :2021/12/13 20:26
@Desc   :
=================================================='''
import sys

import mysql.connector# 先安装mysql-connector

# 创建链接数据库
cnn = None
cursor = None

try:
    cnn = mysql.connector.connect(
      host='127.0.0.1',# 默认127.0.0.1
      user='root',
      password='root',
      port=3306,# 默认即为3306
      database='examtest',
      charset='utf8',# 默认即为utf8,
      auth_plugin='mysql_native_password'
    )# connect方法加载config的配置进行数据库的连接,完成后用一个变量进行接收

except mysql.connector.Error as e:
    print('数据库链接失败!', str(e))
else:
    # 编写sql 语句
    sql = "select * from students"
    # 创建 光标 来执行 sql
    cursor = cnn.cursor()
    # 执行sql 来查询结果
    cursor.execute(sql)
    # 获取结果中全部的值 赋值 给 value 以列表的形式展示
    value = cursor.fetchall()
    print(value)
finally:
    # 释放资源
    cursor.close()
    cnn.close()
   
# 退出程序
sys.exit()
```



#### 创建表操作

> 在 python 中 可以编写创建 表 的sql 语句来进行 创建表操作。
>
> **以及增删改查**

**工具类**

```python
'''=================================================
@Project -> File   :pythonStudy -> DbConnect
@IDE    :PyCharm
@Author :Mr.Shi
@Date   :2021/12/15 19:03
@Desc   :简单定义一个 连接数据库的工具类
=================================================='''
import mysql


def con():

    try:
      cnn = mysql.connector.connect(
            host='127.0.0.1',# 默认127.0.0.1
            user='root',
            password='root',
            port=3306,# 默认即为3306
            database='examtest',
            charset='utf8',# 默认即为utf8,
            auth_plugin='mysql_native_password'
      )# connect方法加载config的配置进行数据库的连接,完成后用一个变量进行接收

    except mysql.connector.Error as e:
      print('数据库链接失败!', str(e))
    else:
      return cnn

```

**测试**

```python
'''=================================================
@Project -> File   :pythonStudy -> Db_Demo01
@IDE    :PyCharm
@Author :Mr.Shi
@Date   :2021/12/13 20:26
@Desc   :
=================================================='''
import sys
# 如果是 调用的 工具类的话,在当前类中 也要使用import将连接数据库所需要的包 导入进来
import mysql.connector
from util import DbConnect

'''
      # 使用 python 中的函数 创建一个 创建sql 表的函数
'''


def create_table():
    # 创建链接对象通过 调用封装好的 类 来进行 连接数据库

    cnn = DbConnect.con()
    cursor = None

    # 创建 光标 来执行 sql
    try:
      # 编写 一条 创建表的 sql 语句
      sql = 'create table `python_test_sql`(' \
            'id int not null comment \'id编号\',' \
            'name varchar(255) null comment \'姓名\'' \
            ');'
      cursor = cnn.cursor()
      # 执行sql 来查询结果
      cursor.execute(sql)
    except mysql.connector.errors as e:
      print("创建表失败", str(e))

    # 释放资源
    cursor.close()
    cnn.close()

    # 退出程序
    sys.exit()


'''
      # 创建一个向表中 添加数据的 方法
      1、使用 字符串传递参数的方式进行 参数的 传递
'''


def insert_content_str(id, name):
    cnn = DbConnect.con()
    #       通过连接数据库的方法 cnn 创建 游标
    cursor = cnn.cursor()
    #       编写 插入数据的 sql 的语句
    sql = "insert into python_test_sql(`id`,`name`) values (" + str(id) + ",'" + name + "')"
    print(sql)
    cursor.execute(sql)

    #   如果数据库 mysql 的引擎使用的是 innodb 需要提交事务
    # 1.
    #   cnn.commit()
    # 2.
    cursor.execute('commit')
    sys.exit()


'''
      2、在向数据库中表 添加数据时 可以使用 占位符来进行传参 使用元组 来 将占位符 替换掉即可
'''


def insert_content_tuple(data):
    cnn = DbConnect.con()
    cursor = cnn.cursor()

    sql = "insert into python_test_sql(`id`,`name`) values (%s,%s)"

    # 通过 执行sql时 可以将 数据传递给 sql 中的占位符
    cursor.execute(sql, data)

    cnn.commit()
    sys.exit()


'''
      3、在 python中支持 多行插入 使用的是 列表 序列
'''


def insert_content_list(data):
    cnn = DbConnect.con()
    cursor = cnn.cursor()
    sql = "insert into python_test_sql(`id`,`name`) values (%s,%s)"
    # 执行 插入 多天记录 到 数据库中
    cursor.executemany(sql, data)

    cnn.commit()
    sys.exit()


'''
      查询 id为 1的 所有的记录数
'''


def selectById(id):
    cnn = DbConnect.con()
    cursor = cnn.cursor()

    sql = "select * from python_test_sql where id =%s"

    # 通过 执行sql时 可以将 数据传递给 sql 中的占位符
    cursor.execute(sql, id)
    # 获得 sql 执行完毕的结果
    value = cursor.fetchall()
    print(value)
    sys.exit()


'''
      删除 某一条记录
'''


def delectById(id):
    cnn = DbConnect.con()
    cursor = cnn.cursor()

    sql = "delete from python_test_sql where id =%s"

    # 通过 执行sql时 可以将 数据传递给 sql 中的占位符
    cursor.execute(sql, id)
    cnn.commit()
    sys.exit()


'''
      修改 某一条记录
'''


def updateById(data):
    cnn = DbConnect.con()
    cursor = cnn.cursor()

    sql = "update python_test_sql set id = %s where id =%s"

    # 通过 执行sql时 可以将 数据传递给 sql 中的占位符
    cursor.execute(sql, data)
    cnn.commit()
    sys.exit()


if __name__ == '__main__':
    # create_table()

    # insert_content_str(1, "hanamaki")

    # 定义一个元组
    # tuple_data = ("2", "andy",)
    # insert_content_tuple(tuple_data)

    #   定义一个 列表序列
    # list_data = [
    #   ("3", "jojo"),
    #   ("4", "rose")
    # ]
    # insert_content_list(list_data)

    # selectById((1,))
    # delectById((1,))
    updateById((1, 2))
```



#### 事务的操作

```python
'''
      事务的操作
'''


def transActions(transferPersonId, payeeId, money):

    print(transferPersonId,payeeId,money)
    cnn = DbConnect.con()
    cursor = cnn.cursor()

    # 建表操作
    create_sql = 'create table `transActions_sql`(' \
               'transferPerson int ,' \
               'money int' \
               ')ENGINE=Innodb DEFAULT CHARSET = utf8'
    # MyISAM 和 innodb 不一样 增 删 改 不需要 操作 事务

    cursor.execute(create_sql)

    # 创建表完成之后我们可以开始 向表中先添加两列值
    sql = "insert into transActions_sql(`transferPerson`,`money`) values (%s,%s)"
    # 执行 插入 多天记录 到 数据库中
    data = [(1, 5000), (2, 4000)]
    cursor.executemany(sql, data)
    cnn.commit()
    print("-------------------")
    #   当表中的数据创建完成之后 开始 事务的操作
    try:
      print("+++++++++++++++++++++++")
      sql1 = "update transActions_sql set money = money - %s where transferPerson =%s"
      # 通过 执行sql时 可以将 数据传递给 sql 中的占位符
      cursor.execute(sql1, (money, transferPersonId,))
      cnn.commit()
      sql2 = "update transActions_sql set money = money + %s where transferPerson =%s"
      # 通过 执行sql时 可以将 数据传递给 sql 中的占位符
      cursor.execute(sql2, (money, payeeId,))
      cnn.commit()
      print("成功")
    except :
      print("失败")
      cnn.rollback()
    finally:
      print(")))))))))))))))))))))))))")
      sys.exit()
```

**调用**

```python
transActions(1, 2, 500)
```

#### 将PDF文件放在链接地址中了,下载即可


floweztnt 发表于 2023-5-18 17:39

麻竹,学习一下,谢谢楼主分享

zhangmi008 发表于 2023-5-18 19:43

楼主有心了,笔记做得很有章法

GYYCNH 发表于 2023-5-18 21:44

感谢楼主

rememberhiding 发表于 2023-5-18 22:08

感谢楼主,刚好最近在学

ttdttt 发表于 2023-5-18 22:17

很有用处

bestwars 发表于 2023-5-18 22:49

下载学习了,谢谢楼主分享

zj23308 发表于 2023-5-19 03:10

必须支持,感谢分享

kiweni 发表于 2023-5-19 08:08

厉害,我一直在入门和放弃之间徘徊

lingwushexi 发表于 2023-5-19 09:02

下载学习了,谢谢楼主分享
页: [1] 2
查看完整版本: 【Python笔记(3.+)】Python记录笔记