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)
相关推荐
大鱼>4 分钟前
DSPy:LLM程序自动编译与提示词优化
开发语言·人工智能·python·深度学习
2401_843253709 分钟前
金融智能:AI如何重构银行业未来
人工智能·python·金融
uncle_ll10 分钟前
服务器选型、微调范式、训练优化与环境搭建
服务器·python·gpt·llm·nlp
撩妹帝九歌12 分钟前
Java文件写入与编码、字节数组、字符集、字符编解码 一文打通!
java·开发语言
星核0penstarry19 分钟前
Solon AI v4.0.4 技术分析:Java Agent 框架的兼容性突破与选型考量 基于 OSCHINA 2026-07-30 报道及公开技术资料整理
java·开发语言·人工智能
昨夜星河入梦来26 分钟前
postman接口测试报错503的解决方法
开发语言·postman
久久学姐29 分钟前
Python开发爬虫的常用技术架构
爬虫·python·http·框架·数据存储
circuitsosk29 分钟前
大规模离线数据管道构建:样本获取、清洗、加工与合成
人工智能·python·机器学习·搜索引擎
tang777891 小时前
分布式爬虫优化指南:如何用代理IP把采集效率提升300%
分布式·爬虫·python·tcp/ip·分布式爬虫·爬虫代理·代理ip
gwf2161 小时前
Soft-RoCE与Soft-iWARP深度解析:无硬件RDMA学习环境搭建(零基础必知必会)
人工智能·python·tcp/ip·tcp·tcpdump