在python中使用mysql数据库

  在之前的学习中我们在登录系统操作的时候,数据都是储存在本地的一个文件中,这种操作在实际运用中肯定是不可取的,因为在实际中我们的数据都是存储在数据库中,用户注册的时候把注册信息存在数据库中,在登录的时候直接访问数据库进行下一步操作.那么如何在python3 中进行mysql数据库操作呢?

python3连接mysql

  在python中使用mysql,需要使用一个第三方模块,这个模块就是PYMySQL,在使用的时候调用这个模块就行,在python2中则是使用mysqldb,在Django中也是使用pymsql连接mysql数据库.

安装pymsql

  在使用pymsql的之前,我们需要知道在python的IDE中没有这个库,需要我们自己安装,安装非常的简单,只需要打开电脑的终端,然后输入下列代码就行:

pip install pymysql

这样pymysql就已经安装好了在python的IDE中再导入一下就行.

连接数据库

注意事项
在连接数据库的时候我们需要注意几个问题,这也是使用数据库的前提

  1. 拥有一个mysql数据库,这个数据库可以是本地的也可以是其他地方的,但是必须要有.
  2. 你有可以连接该数据库的用户名和密码,在数据库里你得获得授权.
  3. 你有一个有权限操作的库

基本使用

1. 导入pymysql模块
  和其他模块的导入一样,我们需要导入下pymsql这个模块,导入的语句如下:

import pymsql

2. 链接数据库
  再导入完之后我们就需要开始连接mysql数据库:

conn = pymsql.connect(host='你的数据库的地址',
                                     user='用户名',
                                     password='密码',
                                    database='数据库名',
                                    charset='utf8')

  到此你就登录了你要登录的数据库了,在这有个重要的事!!! utf8!utf8!utf8! 重要的事情说三遍,记住不带-.带-就错了.
3. 获得光标对象
  我们登录后要操作mysql数据库,我们需要得到一个可以执行sql语句的光标对象,就像在终端上一样需要有个定位.

cursor = conn.cursor()

4. 执行sql语句
  获得光标后,我们需要开始执行SQL语句.

cursor.execute('select * from userinfo;')

这个是默认返回元组类型的数据.

cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

返回的是字典类型的数据
5.提交
在执行完sql语句之后,我们需要提交,数据才会保存到数据库

conn.commit()

6.回滚
在执行增删改操作时,如果不想提交前面的操作,可以使用 rollback() 回滚取消操作.

# 导入pymysql模块
import pymysql
# 连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 得到一个可以执行SQL语句的光标对象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
username = "DSB"
age = 18
try:
    # 执行SQL语句
    cursor.execute(sql, [username, age])
    # 提交事务
    conn.commit()
except Exception as e:
    # 有异常,回滚事务
    conn.rollback()
cursor.close()
conn.close()

7.关闭

  • 关闭光标对象
cursor.close()
  • 关闭连接
conn.close()

增删改查操作

  在pymysql模块下对数据库进行增删改查也是可以的.同在终端对数据库增删改查一样.

  在pymsql模块中,我们连接好了数据库,就可以对数据库里边的表进行增加操作了.

# 导入pymysql模块
import pymysql
# 连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 得到一个可以执行SQL语句的光标对象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
username = "DSB"
age = 18
# 执行SQL语句
cursor.execute(sql, [username, age])
# 提交事务
conn.commit()
cursor.close()
conn.close()

其中,%s是占位符.如果数据输入有误就用回滚取消操作,在操作完之后获取插入数据的ID

# 导入pymysql模块
import pymysql
# 连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 得到一个可以执行SQL语句的光标对象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
username = "DSB"
age = 18
try:
    # 执行SQL语句
    cursor.execute(sql, [username, age])
    # 提交事务
    conn.commit()
    # 提交之后,获取刚插入的数据的ID
    last_id = cursor.lastrowid
except Exception as e:
    # 有异常,回滚事务
    conn.rollback()
cursor.close()
conn.close()

# 导入pymysql模块
import pymysql
# 连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 得到一个可以执行SQL语句的光标对象
cursor = conn.cursor()
sql = "DELETE FROM USER1 WHERE id=%s;"
try:
    cursor.execute(sql, [4])
    # 提交事务
    conn.commit()
except Exception as e:
    # 有异常,回滚事务
    conn.rollback()
cursor.close()
conn.close()

# 导入pymysql模块
import pymysql
# 连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 得到一个可以执行SQL语句的光标对象
cursor = conn.cursor()
# 修改数据的SQL语句
sql = "UPDATE USER1 SET age=%s WHERE name=%s;"
username = "Alex"
age = 80
try:
    # 执行SQL语句
    cursor.execute(sql, [age, username])
    # 提交事务
    conn.commit()
except Exception as e:
    # 有异常,回滚事务
    conn.rollback()
cursor.close()
conn.close()

1. 查询单条数据

# 导入pymysql模块
import pymysql
# 连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 得到一个可以执行SQL语句的光标对象
cursor = conn.cursor()
# 查询数据的SQL语句
sql = "SELECT id,name,age from USER1 WHERE id=1;"
# 执行SQL语句
cursor.execute(sql)
# 获取单条查询数据
ret = cursor.fetchone()
cursor.close()
conn.close()
# 打印下查询结果
print(ret)

2. 查询多条数据

# 导入pymysql模块
import pymysql
# 连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 得到一个可以执行SQL语句的光标对象
cursor = conn.cursor()
# 查询数据的SQL语句
sql = "SELECT id,name,age from USER1;"
# 执行SQL语句
cursor.execute(sql)
# 获取多条查询数据
ret = cursor.fetchall()
cursor.close()
conn.close()
# 打印下查询结果
print(ret)

查询时移动光标

1. 可以获取指定数量的数据
cursor.fetchmany(3)
2. 光标按绝对位置移动1
cursor.scroll(1, mode=”absolute”)
3. 光标按照相对位置(当前位置)移动1
cursor.scroll(1, mode=”relative”)

    原文作者:不吃鱼的洋
    原文地址: https://www.jianshu.com/p/903057a05559
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞