Python操作MySQL基础使用

这篇具有很好参考价值的文章主要介绍了Python操作MySQL基础使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python操作MySQL基础使用

链接数据库并查询数据

import pymysql

# 链接数据库
conn = pymysql.connect(
    host='10.5.6.250',
    port=3306,
    user='root',
    password='********'
)

# 查看MySQL版本信息
print(conn.get_server_info())  # 5.5.27

# 获取到游标对象
cursor = conn.cursor()

# 选择数据库
conn.select_db("hanligang_data")

# 使用游标对象执行sql语句
sql = "select * from tstudent"
cursor.execute(sql)

# 获取查询结果
results: tuple = cursor.fetchall()
print(results)  # 结果是一个大元组,里面包含了每一行数据的小元组

for r in results:
    print(r)

conn.close()  # 关闭

查询结果(里面身份证为for循环生产的虚拟数据):

('0000000118', '魏欣若', '男', '6968390833530048', '1984-09-19 00:00:00.000', 'weixinruo@91xueit.com', '开发', '2019-12-18 17:58:52.85')
('0000000119', '胡辉香', '男', '1687819817472568', '1985-02-18 00:00:00.000', 'huhuixiang@91xueit.com', '开发', '2019-12-18 17:58:52.85')
('0000000120', '姜利维', '男', '1367699597056572', '1988-10-17 00:00:00.000', 'jiangliwei@91xueit.com', '网络', '2019-12-18 17:58:52.85')
('0000000121', '马文霞', '男', '2921194355462422', '1984-03-11 00:00:00.000', 'mawenxia@91xueit.com', '测试', '2019-12-18 17:58:52.85')
('0000000122', '于爽轮', '女', '3826182221042389', '1981-03-27 00:00:00.000', 'yushuanglun@91xueit.com', '网络', '2019-12-18 17:58:52.85')
('0000000123', '吴军雪', '女', '361896711952425', '1988-10-05 00:00:00.000', 'wujunxue@91xueit.com', '开发', '2019-12-18 17:58:52.85')
('0000000124', '廖菲以', '男', '6206075708967862', '1984-10-07 00:00:00.000', 'liaofeiyi@91xueit.com', '开发', '2019-12-18 17:58:52.85')
('0000000125', '孔国馨', '男', '6196758315299228', '1984-04-07 00:00:00.000', 'kongguoxin@91xueit.com', '开发', '2019-12-18 17:58:52.85')
('0000000126', '李伟伟', '女', '9973233711794250', '1988-08-05 00:00:00.000', 'liweiwei@91xueit.com', '开发', '2019-12-18 17:58:52.85')

修改库或者表

import pymysql

db = pymysql.connect(
host='localhost', user='root', password='mysql',  #连接到数据库需要指定的最少信息
                     db = 'demo', database='demo', #指定选择的数据库,任选一个都可,前面是简写
                     passwd='mysql', #密码也可以用passwd简写形式
                     autocommit=True, #设置修改自动提交到数据库
                     auth_plugin_map='mysql_native_password'
                     ) #设置身份认证,8.0版本之后建议加上
cursor = db.cursor() #创建一个指针,之后基本所有的操作都是使用指针来实现
cursor.execute('show databases;') #执行SQL语句
db.commit() #将修改提交到数据库——如果连接时参数autocommit设置为false要加上
cursor.fetchall() #获取上一条SQL语句的执行结果,如查询结果等
cursor.fetchone() #获取执行结果的一行
db.close() #关闭数据库

常用方法

为了让程序更加健壮,我们一般不会链接数据库这样调用该函数,先不说麻烦与否,如果我们经常要修改连接参数,那么我们所有调用地方都会修改,这样的代码十分不健壮。所以我们应该使用模块化进行解决,代码如下:

import pymysql
 
def connect_mysql():
    db_config = {
        'host':'127.0.0.1',
        'port':3306,
        'user':'ian',
        'password':'ian123',
        'charset':'utf8'
    }
    conn = pymysql.connect(**db_config)
    return conn

查询函数

def query_students_fetchone():
    sql = 'SELECT * FROM students'
    rows = cursor.execute(sql)
    print('There are %d students' % rows)
 
    for i in range(rows):
        student = cursor.fetchone()
        print(student)

增删数据库
增删改,操作方式都一样,只是mysql语句的不同,返回的值是影响的行数。需要注意的是,我们需要提交事务,如果不提交事务,语句是不执行的,只是显示执行成功,但是表中并没有进行相关操作。代码如下:

import pymysql
 
def insert_mysql():
    no = int(input('编号: '))
    name = input('名称: ')
    location = input('所在地: ')
 
    # 1. 创建连接
    conn = pymysql.connect(host='127.0.0.1', port=3306,
                       user='ian', password='ian123',
                       database='test', charset='utf8')
    try:
        # 2. 获取游标对象
        with conn.cursor() as cursor:
            # 3. 通过游标对象向数据库服务器发出SQL语句
            affected_rows = cursor.execute(
                'insert into `tb_test` values (%s, %s, %s)',
                (no, name, location)
            )
            if affected_rows == 1:
                print('新增成功!!!')
        # 4. 提交事务
        conn.commit()
    except pymysql.MySQLError as err:
        # 4. 回滚事务
        conn.rollback()
        print(type(err), err)
    finally:
        # 5. 关闭连接释放资源
        conn.close()
 
def del_mysql():
    no = int(input('编号: '))
 
    # 1. 创建连接
    conn = pymysql.connect(host='127.0.0.1', port=3306,
                       user='ian', password='ian123',
                       database='test', charset='utf8',
                       autocommit=True)
    try:
        # 2. 获取游标对象
        with conn.cursor() as cursor:
            # 3. 通过游标对象向数据库服务器发出SQL语句
            affected_rows = cursor.execute(
                'delete from `tb_dept` where `dno`=%s',
                (no, )
        )
            if affected_rows == 1:
                print('删除成功!!!')
    finally:
        # 5. 关闭连接释放资源
        conn.close()
 
insert_mysql()
del_mysql()
 

封装mysql类文章来源地址https://www.toymoban.com/news/detail-729073.html

import pymysql
from pathlib import Path
 
class ConnectMsql:
    def __init__(self, host='127.0.0.1', port=3306, user='ian',
                 password='ian123', database="test", filename: str = "test.sql"):
        """
        :param host:        域名
        :param port:        端口
        :param user:        用户名
        :param password:    密码
        :param database:    数据库名
        :param filename:    文件名称
        """
 
        self._host: str = host
        self._port: int = port
        self._user: str = user
        self._password: str = password
        self._database: str = database
        self._file_path = Path(__file__).parent.joinpath(filename)
 
    def _show_databases_and_create(self):
        """
        查询数据库是否存在,不存在则进行新建操作
        :return:
        """
        connection = pymysql.connect(host=self._host, port=self._port, user=self._user, password=self._password,
                                     cursorclass=pymysql.cursors.DictCursor)
        with connection:
            with connection.cursor() as cursor:
                cursor.execute('show databases;')
                result = cursor.fetchall()
                results = self._database not in tuple(x["Database"] for x in result)
 
        if results:
            with connection.cursor() as cursor:
                cursor.execute(f'create database {self._database};')
            with connection.cursor() as cursor:
                cursor.execute('show databases;')
                result = cursor.fetchall()
                results = self._database in tuple(x["Database"] for x in result)
            return results if results else result
        else:
            return True
 
    def _export_databases_data(self):
        """
        读取.sql文件,解析处理后,执行sql语句
        :return:
        """
        if self._show_databases_and_create() is True:
            connection = pymysql.connect(host=self._host, port=self._port, user=self._user, password=self._password,
                                         database=self._database, charset='utf8')
            # 读取sql文件,并提取出sql语句
            results, results_list = "", []
            with open(self._file_path, mode="r+", encoding="utf-8") as r:
                for sql in r.readlines():
                    # 去除数据中的“\n”和“\r”字符
                    sql = sql.replace("\n", "").replace("\r", "")
                    # 获取不是“--”开头且不是“--”结束的数据
                    if not sql.startswith("--") and not sql.endswith("--"):
                        # 获取不是“--”的数据
                        if not sql.startswith("--"):
                            results = results + sql
 
                # 根据“;”分割数据,处理后插入列表中
                for i in results.split(";"):
                    if i.startswith("/*"):
                        results_list.append(i.split("*/")[1] + ";")
                    else:
                        results_list.append(i + ";")
 
            # 执行sql语句
            with connection:
                with connection.cursor() as cursor:
                    # 循环获取sql语句
                    for x in results_list[:-1]:
                        # 执行sql语句
                        cursor.execute(x)
                        # 提交事务
                        connection.commit()
                    else:
                        return "sql全部语句执行成功 !"
 
    @property
    def sql_run(self):
        """
        执行方法
        :return:
        """
        return self._export_databases_data()
 
if __name__ == '__main__':
    res = ConnectMsql().sql_run
    print(res)

到了这里,关于Python操作MySQL基础使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 操作 MySQL 数据库:使用 mysql-connector-python 库

    在现代应用程序中,与数据库的交互是不可或缺的一部分。Python 提供了许多库来连接和操作各种数据库,其中最常用的之一就是 mysql-connector-python 。本篇博客将介绍如何使用 Python 操作 MySQL 数据库,包括连接数据库、创建表、插入数据、查询数据以及更新和删除数据等操作。

    2024年02月03日
    浏览(38)
  • python使用SQLAlchemy进行mysql的ORM操作

    现在很多的企业进行后端开发时,程序员在分析完业务后,会使用Java的SpringBoot或者Python的Django、Flask等网络框架进行项目开发。在这些网络框架业务逻辑代码编写的过程中,很大概率会需要使用到MySQL数据库,但是原生的SQL语句又存在被SQL注入的风险,而且在复杂的查询时,

    2024年02月07日
    浏览(41)
  • python3使用pymsql操作mysql数据库

    操作系统 :Windows 10_x64 python版本 :3.9.2 pymysql版本: 1.0.2 MySQL版本: 5.7.38   之前写过一篇关于python操作mysql数据库的文章: https://www.cnblogs.com/MikeZhang/p/pythonOptMysql20170703.html 当时是基于python 2.7 和 mysql 5.5来整理的,但目前python 2.7已经不再维护,主流的是python 3,今天基于pyt

    2024年02月05日
    浏览(48)
  • 【100天精通python】Day32:使用python操作数据库_MySQL下载、安装、配置、使用实战

    目录  专栏导读  1 MySQL概述 2 MySQL下载安装 2.1 下载  2.2 安装 2.3 配置

    2024年02月12日
    浏览(36)
  • 使用Python进行数据库连接与操作SQLite和MySQL【第144篇—SQLite和MySQL】

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在现代应用程序开发中,与数据库进行交互是至关重要的一环。Python提供了强大的库来连接和操作各种类型的数据库,其中包括SQLite和MySQL。

    2024年03月27日
    浏览(45)
  • 【Python】Python操作MySQL详解——PyMySQL

    Python标准数据库规范为 DB-API, DB-API定义了一系列必须的对象和数据库操作方式,以便为各种数据库系统和数据库访问程序提供一致的访问接口。 开发人员将接口封装成不同的数据库操作模块,不同的数据库需要不同数据库操作模块,例如,MySQL数据库,它对应以下操作模块

    2024年02月02日
    浏览(31)
  • 【Python】操作MySQL

    安装第三方库: 由于MySQL经常需要使用到增删改查,为此,提供一个工具类

    2024年02月11日
    浏览(34)
  • Python操作之MySQL

    目录 安装PyMySQL PyMySQL操作mysql步骤 创建表格 连接Mysql 游标 事务特性 事务提交 查数据库 增删数据库 封装mysql类 错误处理 总结 在使用Python中我们都要安装相关的库,mysql在python经常使用的库为PyMySQL,安装如下: pip install PyMySQL 1.创建连接。使用PyMySQL模块提供的‘connect’函数

    2024年02月08日
    浏览(31)
  • Python操作mysql

    一、python对MySQL的基本操作 1.连接数据 2.创建数据库 3.进入数据库创建表 4. 查看数据库中的表 5.新增数据 6.删除 7.修改数据 8.查询数据 9.关闭数据库 10.执行存储过程 其他略 二、python操作MySQL的应用 1.登录注册 2.防止sql注入 1.注入示例 如果用户在输入user时,输入了: ’ or

    2024年02月16日
    浏览(36)
  • Python 操作Mysql(PyMysql)

    Python 操作 Mysql 常用方式: PyMysql:纯 Python 语言编写的 Mysql 操作客户端,安装方便,支持 Python3。 SQLAlchemy:是一个非常强大的 ORM 框架,不提供底层的数据库操作,主要是通过定义模型对应数据表结构,在 Python Web 编程领域应用广泛。 在实际项目中,如果仅仅是简单的爬虫

    2024年02月04日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包