zoukankan      html  css  js  c++  java
  • MySQL数据库在Python中的操作

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

    1.1.下载:

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

    1.2配置环境变量:

      环境变量的配置,和java的配置方式一致,就是把MySQL 的bin路径 D:mysql-5.7.20-winx64in,放到环境变量中。配置完成后,打开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-winx64data
    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()
    

      

     

  • 相关阅读:
    SSD
    NMS---非极大值抑制
    检测评价函数 IOU
    Ground Truth
    耿建超英语语法---状语从句
    联合索引创建时候的排序规则
    order by limit的原理
    mysql事务四种隔离级别
    为什么 Redis 快照使用子进程
    MYSQL查询~ 存在一个表而不在另一个表中的数据
  • 原文地址:https://www.cnblogs.com/mainstream/p/11383322.html
Copyright © 2011-2022 走看看