MySQL数据库在Python中的操作

1.MySQL数据库的安装配置和启动

1.1.下载:

打开MySQL的官网www.mysql.com,发现有一个DOWNLOADS

1.2配置环境变量:

  环境变量的配置,和java的配置方式一致,就是把MySQL 的bin路径 D:\mysql-5.7.20-winx64\bin,放到环境变量中。配置完成后,打开cmd命令窗口,输入mysql -V, 如果输出版本号,表示配置成功。

1.3.MySQL配置:

  1.打开我们解压后的文件夹,就是D盘下的mysql-5.7.20-winx64 文件夹,新建一个my.ini文件

  2.然后双击它,用记事本打开, 输入如下内容

[client]
port=3306
default-character-set=utf8

[mysqld] 
# 设置为自己MYSQL的安装目录 
basedir=D:\mysql-5.7.20-winx64
# 设置为MYSQL的数据目录 
datadir=D:\mysql-5.7.20-winx64\data
port=3306
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
#开启查询缓存
explicit_defaults_for_timestamp=true
skip-grant-tables 

  3.在powershell或cmd窗口中,切换到mysql的bin目录, 完成配置。

    首先输入mysqld --initialize 命令,它表示初始化mysql,生成data文件夹中的文件。如果没有报错,就表示初始化完成。

    输入 mysqld -install 命令,安装MySQL. 如果出现Service successfully installed 说明注册成功了  因为我的已经注册好了,所以会出现下图, 已存在。

  现在终于可以启动服务器了 net start mysql 命令启动服务器。关闭服务器用net stop mysql

  4.MySQL 登录和退出

  这涉及到MySQL 命令的常用参数: -u: u代表username, 表示用户名; -p: p 代表password, 表示登录密码; -h: host-name主机名; -P: port 端口。

  所以我们要登录MySQL,需要提供用户名,密码,主机名,端口号信息。语法  mysql [-u username] [-h host] [-p[password]];  安装MySQL后,我们会得到初始的用户名root, 但没有初始密码,但输入密码怎么办?我们只需键入mysql即可。如果访问本地服务器的话和使用mysql的默认端口时,-h和-P可以不写。 现在我们就登录一下, 在这之前要先启动mysql服务器。这里还是要以管理员的身份运行powershell

  当我们在命令行中输入mysql -u root -p 后,提示我们输入密码,这时输入mysql, 就可以登录到mysql 了。

如果某一天MySQL数据库出现问题重新安装 click here

2.在python中操作mysql

Python操作MySQL主要使用两种方式:

  • 原生模块 pymsql
  • ORM框架 SQLAchemy(SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。)

2.1.pymysql操作mysql

python的标准库中,是没有可以直接连接操作mysql的模块,首先我们应安装python的第三方模块pymysql。

使用pymysql操作mysql的步骤:

  1)使用pymysql.connect连接并登录mysql

conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db="liuyandb")

  首先依次创建Connection对象(数据库连接对象)用于打开数据库连接,创建Cursor对象(游标对象)用于执行查询和获取结果;然后执行SQL语句对数据库进行增删改查等操作并提交事务,此过程如果出现异常则使用回滚技术使数据库恢复到执行SQL语句之前的状态;最后,依次销毁Cursor对象和Connection对象。

以流程图的方式展示python操作MySQL数据库的流程:

  

 

Connection对象

  Connection对象即为数据库连接对象,在python中可以使用pymysql.connect()方法创建Connection对象,该方法的常用参数如下:

  host:连接的数据库服务器主机名,默认为本地主机(localhost);字符串类型 user:用户名,默认为当前用户;字符串类型 passwd:密码,无默认值;字符串类 db:数据库名称,无默认值;字符串类型 port:指定数据库服务器的连接端口,默认为3306;整型

Connection对象常用的方法如下:

  cursor():使用当前连接创建并返回游标 commit():提交当前事务 rollback():回滚当前事务 close():关闭当前连接

  2) 使用connection.cursor建立游标

cursor = conn.cursor()

   Cursor对象

  Cursor对象即为游标对象,用于执行查询和获取结果,在python中可以使用conn.cursor()创建,conn为Connection对象。Cursor对象常用的方法和属性如下:

  execute():执行数据库查询或命令,将结果从数据库获取到客户端 fetchone():获取结果集的下一行 fetchmany():获取结果集的下几行 fetchall():获取结果集中剩下的所有行   close():关闭当前游标对象 rowcount:最近一次的execute返回数据的行数或受影响的行数

 

  3) 使用cursor.execute()或cursor.executemany()执行sql语句

cursor.execute(sql)

execute()方法和fetch类方法的工作示原理如下图所示:

增删改查函数:

import pymysql
conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db="days")
cursor = conn.cursor()

# SQL语句:向数据表中插入数据
sql = """SELECT * FROM ren WHERE id=1"""

def cha(sql):
    # sql = input("请输入查询语句:")
    # 异常处理
    try:
        # 执行SQL语句
        cursor.execute(sql)
        # 获取所有的记录列表
        results = cursor.fetchall()
        # 遍历列表
        for row in results:
            # 打印列表元素
            print(row)
    except:
        print('Uable to fetch data!')

    # 关闭数据库连接
    conn.close()


def add(sql):
    # 异常处理
    try:
        # 执行SQL语句
        cursor.execute(sql)
        # 提交事务到数据库执行
        conn.commit()  # 事务是访问和更新数据库的一个程序执行单元
    except:
        # 如果发生错误则执行回滚操作
        conn.rollback()
    # 关闭数据库连接
    conn.close()


def delete(sql):
    # 异常处理
    try:
        # 执行SQL语句
        cursor.execute(sql)
        # 提交到数据库执行
        conn.commit()
    except:
        # 发生错误时回滚
        conn.rollback()
    # 关闭数据库连接
    conn.close()


def change(sql):
    # 异常处理
    try:
        # 执行SQL语句
        cursor.execute(sql)
        # 提交到数据库执行
        conn.commit()
    except:
        # 发生错误时回滚
        conn.rollback()
    # 关闭数据库连接
    conn.close()

  

 

 

posted @ 2019-08-20 15:45  HelloBaby!  阅读(1187)  评论(0编辑  收藏  举报