python从入门到精通3——高级

一.Python MySQL

安装 mysql-connector:

python -m pip install mysql-connector

  • close():关闭数据库连接,在关闭之后再使用数据库连接将引发异常。
  • commit():提交数据库事务。
  • rollback():回滚数据库事务。
  • cursor():获得Cursor游标对象。 
import mysql.connector
from mysql.connector import connect

my_db = connect(
     # 数据库主机地址
    host='localhost',
     # 数据库用户名
    user='root',
     # 数据库密码
    passwd='yourpassword',
    # 固定插件
    auth_plugin='mysql_native_password'
)
print(my_db)
#<mysql.connector.connection.MySQLConnection object at 0x0000014E918348E0>

1.创建数据表 

import mysql.connector
from mysql.connector import connect

my_db = connect(
     # 数据库主机地址
    host='localhost',
     # 数据库用户名
    user='root',
     # 数据库密码
    passwd='yourpassword',
    # 固定插件
    auth_plugin='mysql_native_password'
)
# 获取游标
mycursor = my_db.cursor()
# 创建数据库
mycursor.execute('CREATE DATABASE run_db')
# 查询数据库
mycursor.execute('SHOW DATABASES')
for i in  mycursor:

    print(i)

# 使用数据库
mycursor.execute(" USE run_db")
# 创建数据表
mycursor.execute('CREATE TABLE sites (name VARCHAR(255),url VARCHAR(255))')
# 查询数据表
mycursor.execute('SHOW TABLES')
for n in mycursor:
    print(n)

 2.插入数据

import mysql.connector
from mysql.connector import connect
my_db = connect(
      # 数据库主机地址
    host='localhost',
     # 数据库用户名
    user='root',
     # 数据库密码
    passwd='yourpassword',
    # 固定插件
    auth_plugin='mysql_native_password'
)
mycursor = my_db.cursor()
mycursor.execute('USE demo')
mycursor.execute('CREATE TABLE sites (name VARCHAR(255),url VARCHAR(255))')

# 插入数据
sql = 'INSERT INTO sites (name,url) VALUE (%s,%s)'
val = ('南栀北夏网站','jinghan.site')
mycursor.execute(sql,val)
# 在执行插入、更新或删除等修改数据库的操作后,必须调用 commit() 方法才能确保更改被保存到数据库中。
my_db.commit()
# mycursor.rowcount 返回最后一次执行 SQL 语句后受影响的行数
print(mycursor.rowcount,'记录插入成功')

 

 批量插入

import mysql.connector
from mysql.connector import connect
my_db = connect(
      # 数据库主机地址
    host='localhost',
     # 数据库用户名
    user='root',
     # 数据库密码
    passwd='yourpassword',
    # 固定插件
    auth_plugin='mysql_native_password'
)
mycursor = my_db.cursor()
mycursor.execute('USE demo')

# 插入数据
sql = 'INSERT INTO sites (name,url) VALUE (%s,%s)'
val = [
    ('南栀北夏网站','jinghan.site'),
    ('百度','baidu.com'),
    ('github','https://www.github.com')
    ]
# executemany() 方法,并传递了 SQL 插入语句和要插入的多个值的列表
mycursor.executemany(sql,val)
# 在执行插入、更新或删除等修改数据库的操作后,必须调用 commit() 方法才能确保更改被保存到数据库中。
my_db.commit()
# mycursor.rowcount 返回最后一次执行 SQL 语句后受影响的行数
print(mycursor.rowcount,'记录插入成功')

 3.查询数据


import mysql.connector
from mysql.connector import connect
my_db = connect(
      # 数据库主机地址
    host='localhost',
     # 数据库用户名
    user='root',
     # 数据库密码
    passwd='yourpassword',
    # 固定插件
    auth_plugin='mysql_native_password'
)
mycursor = my_db.cursor()
# 选择数据库
mycursor.execute('USE demo')
# 查询数据库
mycursor.execute('SELECT name,url FROM sites')
# mycursor.fetchall() 方法是执行查询操作后获取所有结果的方法
myresult = mycursor.fetchall()
for i in myresult:
    print(i)

 myresult = mycursor.fetchone():读取一条数据,可以使用 fetchone() 方法

4. 删除记录


import mysql.connector
from mysql.connector import connect
my_db = connect(
      # 数据库主机地址
    host='localhost',
     # 数据库用户名
    user='root',
     # 数据库密码
    passwd='yourpassword',
    # 固定插件
    auth_plugin='mysql_native_password'
)
mycursor = my_db.cursor()
# 选择数据库
mycursor.execute('USE demo')
# 删除数据
sql = "DELETE FROM sites WHERE name = '百度'"
#;另外一种方法:
#sql = "DELETE FROM sites WHERE name = %s"
#na = ("stackoverflow", )
#mycursor.execute(sql, na)
mycursor.execute(sql)
my_db.commit()
print(mycursor._rowcount,'条记录删除')


 5.更新表数据


import mysql.connector
from mysql.connector import connect
my_db = connect(
      # 数据库主机地址
    host='localhost',
     # 数据库用户名
    user='root',
     # 数据库密码
    passwd='yourpassword',
    # 固定插件
    auth_plugin='mysql_native_password'
)
mycursor = my_db.cursor()
# 选择数据库
mycursor.execute('USE demo')
# 更新表数据
sql = "UPDATE sites SET name = 'zh' WHERE name = '南栀北夏网站'"
mycursor.execute(sql)
my_db.commit()
print(mycursor.rowcount,'条记录修改')


二.PyMySQL 驱动 

安装最新版的 PyMySQL

 pip3 install PyMySQL

1.创建数据库表

import pymysql
# 打开数据库连接
db = pymysql.connect(
    host='localhost',
    user='root',
    password='yourpassword',
    # 数据库名称
    database='demo'
)
# 创建一个游标对象
cusor = db.cursor()
# 创建数据库表
sql = """
    CREATE TABLE EMPLOTEE(
    name CHAR(20) NOT NULL,
    age INT,
    sex CHAR(1),
    INCOME FLOAT
    )
"""
cusor.execute(sql)
db.close()

 2.插入数据

import pymysql
# 打开数据库连接
db = pymysql.connect(
    host='localhost',
    user='root',
    password='yourpassword',
    # 数据库名称
    database='demo'
)
# 创建一个游标对象
cusor = db.cursor()
# sql插入数据
sql = "INSERT INTO EMPLOTEE(name,age,sex,INCOME) VALUES ('tom',18,'男',2000)"
try:
    # 执行sql语句
    cusor.execute(sql)
    # 提交到数据库执行
    db.commit()
except Exception as e:
    print('发生错误',e)

    # 发生错误时回滚
    db.rollback()

# 关闭数据库
db.close()





 3.查询数据

  • fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
  • fetchall(): 接收全部的返回结果行.
  • rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。

import pymysql

# 打开数据库连接
db = pymysql.connect(
    host='localhost',
    user='root',
    password='yourpassword',
    database='demo'
)

# 创建一个游标对象
cursor = db.cursor()

# SQL 查询数据
sql = "SELECT * FROM EMPLOTEE WHERE INCOME > %s" % (1000)

try:
    db.commit()
    cursor.execute(sql)
    result = cursor.fetchall()
    for row in result:
        name = row[0]
        age = row[1]
        sex = row[2]
        income = row[3]
        print("name=%s, age=%s, sex=%s, income=%s" % (name, age, sex, income))
except Exception as e:
    print('代码异常:', str(e))

# 关闭游标和数据库连接
cursor.close()
db.close()

4.更新数据 

import pymysql

# 打开数据库连接
db = pymysql.connect(
    host='localhost',
    user='root',
    password='yourpassword',
    database='demo'
)

# 创建一个游标对象
cursor = db.cursor()

# sql更新数据
sql = "UPDATE EMPLOTEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('男')
try:
    # 执行sql
    cursor.execute(sql)
    db.commit()
except Exception as e:
    print('代码异常',e)
    db.rollback()

db.close()

 5.删除数据

import pymysql

# 打开数据库连接
db = pymysql.connect(
    host='localhost',
    user='root',
    password='yourpassword',
    database='demo'
)

# 创建一个游标对象
cursor = db.cursor()

# sql删除数据
sql = "DELETE FROM EMPLOTEE WHERE AGE < 20"
try:
    cursor.execute(sql)
    db.commit()
except Exception as e:
    print(e)
    db.rollback()

db.close()
 

三. Python 多线程

多线程类似于同时执行多个不同程序,多线程运行有如下优点:

  • 使用线程可以把占据长时间的程序中的任务放到后台去处理。
  • 用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。
  • 程序的运行速度可能加快。
  • 在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。

Python中使用线程有两种方式:函数或者用类来包装线程对象。

函数式:调用 _thread 模块中的start_new_thread()函数来产生新线程。语法如下:

_thread.start_new_thread ( function, args[, kwargs] )
  • function - 线程函数。
  • args - 传递给线程函数的参数,他必须是个tuple类型。
  • kwargs - 可选参数

 线程模块——threading

  • threading.currentThread(): 返回当前的线程变量。
  • threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
  • threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。
  • run(): 用以表示线程活动的方法。
  • start():启动线程活动。

  • join([time]): 等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。
  • isAlive(): 返回线程是否活动的。
  • getName(): 返回线程名。
  • setName(): 设置线程名。

import threading
import time 
exitFlag = 0
class myThread(threading.Thread):
    def __init__(self,threadID,name,delay):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name
        self.delay = delay

    def run(self):
        print("开始线程:" + self.name)
        print_time(self.name,self.delay,5)
        print('退出线程:' + self.name)

def print_time(threadName,delay,counter):
    while counter:
        if exitFlag:
            threadName.exit()
        time.sleep(delay)
        print ("%s: %s" % (threadName, time.ctime(time.time())))
        counter -= 1

# 创建新线程
thread1 = myThread(1,'Thread-1',1)
thread2 = myThread(2,'Thread-2',2)

# 开启新线程
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print('退出主线程')

  • 23
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
引用提到,Python语言官方建议使用四个空格来缩进代码,并且不使用大括号来表示代码块。这是Python的一个特点。引用中介绍了在Python中创建集合、向集合中添加和删除元素的方法,以及集合的交集、并集和差集运算的示例代码。引用展示了使用format()函数来格式化输出字符串的示例代码。 如果你希望学习Python从入门到精通的笔记,我建议你可以从以下几个方面入手: 1. 基础语法:了解Python的基本语法,如变量、数据类型、运算符和表达式等。 2. 控制流程:学习条件语句和循环语句,如if语句、for循环和while循环等。 3. 函数和模块:掌握定义和调用函数的方法,以及使用模块扩展Python的功能。 4. 数据结构:学习列表、元组、字典和集合等常用的数据结构,了解它们的特点和用法。 5. 文件操作:学习如何读写文件,以及处理文件中的数据。 6. 异常处理:了解如何处理异常,使程序在出错时能够优雅地处理错误。 7. 面向对象编程:学习面向对象的思想和Python中的类、对象和继承等概念。 8. 进阶主题:深入学习Python高级特性,如迭代器、生成器、装饰器和多线程等。 以上是我给出的一些建议,希望对你学习Python有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python学习——从入门到精通(学习笔记)](https://blog.csdn.net/m0_46968642/article/details/122086059)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [python从入门到精通-新手学习笔记 第六章:字典与集合](https://blog.csdn.net/weixin_45694997/article/details/107708392)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

南栀北夏ii

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

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

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

打赏作者

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

抵扣说明:

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

余额充值