Python基础之数据库操作

一、安装第三方库PyMySQL

1、在PyCharm中通过 【File】-【setting】-【Python Interpreter】搜索 PyMySQL进行安装

2、通过PyCharm中的 Terminal 命令行 输入: pip install PyMySQL

注:通过pip安装,可能会提示需要更新pip,这时可执行:pip install --upgrade pip 进行更新pip

二、mysql数据库查询(SELECT)

1、pymysql.connect()连接数据库

复制代码
import pymysql
connect = pymysql.connect(host='101.37.246.001', # 数据库地址
                          port= 3306,            # 数据库端口,mysql一般默认为3306
                          user='xxxx',       # 用户名
                          password='xxxx',   # 登录密码
                          database='movie_cat',  # 要连接的数据库名
                          charset='utf8')        # 数据库编码,一般默认utf8

2、使用 cursor( ) 创建游标

复制代码
import pymysql
connect = pymysql.connect(host='101.37.246.001', # 数据库地址
                          port= 3306,            # 数据库端口,mysql一般默认为3306
                          user='xxxx',       # 用户名
                          password='xxxx',   # 登录密码
                          database='movie_cat',  # 要连接的数据库名
                          charset='utf8')        # 数据库编码,一般默认utf8
with connect.cursor() as cursor: # 创建游标

3、使用 execute( ) 执行sql语句

复制代码
import pymysql
connect = pymysql.connect(host='101.37.246.001', # 数据库地址
                          port= 3306,            # 数据库端口,mysql一般默认为3306
                          user='xxxx',       # 用户名
                          password='xxxx',   # 登录密码
                          database='movie_cat',  # 要连接的数据库名
                          charset='utf8')        # 数据库编码,一般默认utf8
with connect.cursor() as cursor: # 创建游标 # 创建游标
    sql = 'SELECT * FROM movie2 '
    cursor.execute(sql) # 执行sql语句

4、执行sql语句后,需要调用 fetchone() 或 fetchall() 方法来获得查询的返回结果

  • fetchone(): 该方法获取第一个查询结果集。结果集是一个对象,连续多次执行将依次取得下一条结果,直到为空;

  • fetchall(): 接收全部的返回结果行

    import pymysql
    connect = pymysql.connect(host='101.37.246.001', # 数据库地址
    port= 3306, # 数据库端口,mysql一般默认为3306
    user='xxxx', # 用户名
    password='xxxx', # 登录密码
    database='movie_cat', # 要连接的数据库名
    charset='utf8') # 数据库编码,一般默认utf8
    # cursorclass=pymysql.cursors.DictCursor 设置游标返回结果为字典
    with connect.cursor() as cursor: # 创建游标
    sql = 'SELECT * FROM movie2 '
    cursor.execute(sql) # 执行sql语句
    data = cursor.fetchall() # 接收全部返回的结果,返回一个元祖类型
    print(f"数据库查询数据:{data}")
    print(type(data))
    connect.close() # 关闭数据库连接

    数据库查询数据:((1, 'My Neighbor Totoro', '1988'), (2, 'Dead Poets Society', '1989'), (3, 'A Perfect World', '1993'), (4, 'Leon', '1994'), (5, 'Mahjong', '1996'), (6, 'Swallowtail Butterfly', '1996'), (7, 'King of Comedy', '1999'), (8, 'Devils on the Doorstep', '1999'), (9, 'WALL-E', '2008'), (10, 'The Pork of Music', '2012'), (12, 'huawei', '2020'))
    <class 'tuple'>

二、mysql数据库更新数据(UPDATE)

复制代码
import pymysql
connect = pymysql.connect(host='101.37.246.001', # 数据库地址
                          port= 3306,            # 数据库端口,mysql一般默认为3306
                          user='xxxx',       # 用户名
                          password='xxxx',   # 登录密码
                          database='movie_cat',  # 要连接的数据库名
                          charset='utf8')        # 数据库编码,一般默认utf8
with connect.cursor() as cursor: # 创建游标
    sql = 'UPDATE movie2 SET year = 1998 WHERE id = 1 '
    cursor.execute(sql) # 执行sql语句
    connect.commit() # 提交数据到数据库
connect.close() # 关闭数据库连接

在cursor( ) 创建游标后通过execute( ) 执行sql,需要通过connect实例调用commit( ) 进行数据提交

三、mysql数据库插入数据(INSERT)

复制代码
import pymysql
connect = pymysql.connect(host='101.37.246.001', # 数据库地址
                          port= 3306,            # 数据库端口,mysql一般默认为3306
                          user='xxxx',       # 用户名
                          password='xxxx',   # 登录密码
                          database='movie_cat',  # 要连接的数据库名
                          charset='utf8')        # 数据库编码,一般默认utf8
with connect.cursor() as cursor: # 创建游标
    sql = "INSERT INTO movie2(title, year) VALUES ('firstday', '2021');"
    cursor.execute(sql) # 执行sql语句
    connect.commit() # 提交数据到数据库
connect.close() # 关闭数据库连接

四、mysql数据库删除数据(DELETE)

复制代码
import pymysql
connect = pymysql.connect(host='101.37.246.001', # 数据库地址
                          port= 3306,            # 数据库端口,mysql一般默认为3306
                          user='xxxx',       # 用户名
                          password='xxxx',   # 登录密码
                          database='movie_cat',  # 要连接的数据库名
                          charset='utf8')        # 数据库编码,一般默认utf8
with connect.cursor() as cursor: # 创建游标
    sql = "DELETE FROM movie2 WHERE id = 13;"
    cursor.execute(sql) # 执行sql语句
    connect.commit() # 提交数据到数据库
connect.close() # 关闭数据库连接

注:insert/delete/update后都需要调用commit( )提交数据到数据库,完成事务提交

封装一个数据库操作类

复制代码
class ConnectDB:

    config = {
          "host":'47.103.126.208',
          "user":'siyuan',
          "password":'123456',
          "database":'mall',
          "charset":'utf8',
          #"cursorclass":"pymysql.cursors.DictCursor"

    }

    def __init__(self):
        self.connect = pymysql.connect(**self.config)


    def select_datas(self, sql):
        with self.connect.cursor(pymysql.cursors.DictCursor) as cur:
            cur.execute(sql)
            data = cur.fetchall()
            print(data)
            print(type(data))
        return data

    def charge_datas(self, sql):
        pass

    def connect_close(self):
        self.connect.close()

    def __call__(self, act=None, sql=None, connect=True):
        if connect:
            if act == 'select':
                datas = self.select_datas(sql)
                return datas
            elif act in ['update', 'insert', 'delete']:
                self.charge_datas(sql)
                return self
        else:
            self.connect_close()

if __name__ == '__main__':
    connect_db = ConnectDB()
    sql = "SELECT * FROM ls_user WHERE nickname LIKE '%思源%';"
    data1 = connect_db('select', sql)
    data2 = connect_db('select', sql)
    connect_db(connect=False)
相关推荐
hhhjhl6 分钟前
Undici 跨端三方库仓颉适配全流程
java·开发语言·ubuntu
染指11108 分钟前
158.Agent-LangGraph-子图(共享状态和不共享状态模式)
开发语言·人工智能·python·ui·agent·agents
wangchunyu11416 分钟前
JAVA JVM内存结构与运行时数据区
java·开发语言·jvm
slongzhang_20 分钟前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript
云和数据.ChenGuang2 小时前
Python 常见特殊方法详解:__new__、__init__、__del__、__str__、__repr__ 与 __getattribute__
开发语言·人工智能·python·1024程序员节
xyouyuweizhu2 小时前
字节流与字符流:Java IO 的两条主线该怎么选
java·开发语言·python
迪菲赫尔曼2 小时前
【基础篇 04】第一次使用终端:命令在哪里输入,电脑现在又“站”在哪里?
python·yolo·目标检测
qianbo_insist3 小时前
# 在 Qwen3.5-2B 上把 GDN-1 无损换成 GDN-2:一次完整的架构手术实验(负结果)
人工智能·pytorch·python·架构
多弗朗皮卡丘3 小时前
C++的IO流
开发语言·c++·io流·文件io流
骑着蜗牛撵大象3273 小时前
AI Agent 工程化开发实战(三):用 StateGraph 给智能体搭一条可回放的状态流水线
java·开发语言·jvm·ai·状态管理·langgraph·stategraph