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()