MySQL 数据库连接

1.16.1. 什么是 PyMySQL?

  • PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
  • PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。

1.16.2. PyMySQL安装

2.1 使用pip命令进行安装:
$ pip install PyMySQL
2.2 使用 git 命令下载安装包安装(你也可以手动下载):
$ git clone https://github.com/PyMySQL/PyMySQL
$ cd PyMySQL/
$ python3 setup.py install

1.16.3. 数据库连接

3.1 通过如下代码测试数据库连接
#!/usr/bin/python3

import pymysql

# 打开数据库连接
db = pymysql.connect(host="localhost",user="root",password="",db="mydb",charset="utf8")

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 使用 execute()  方法执行 SQL 查询 
cursor.execute("SELECT VERSION()")

# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()

print ("Database version : %s " % data)

# 关闭数据库连接
db.close()
3.2 执行数据查询:
#!/usr/bin/python3

import pymysql

#打开数据库连接
db = pymysql.connect(host="localhost",user="root",password="",db="mydb",charset="utf8")

#使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()

#定义查询sql语句
#sql = "select * from stu"
sql = "select * from stu where classid='%s'"%("python03")

try:
    # 使用execute()方法执行SQL查询 
    cursor.execute(sql)

    print("本次查询条数:",cursor.rowcount)
    '''
    # 使用fetchone()方法获取单条数据.
    while True:
        data = cursor.fetchone();
        if data == None:
            break;
        print (data)
    '''
    #使用fetchall()获取所有结果
    alist = cursor.fetchall()
    for vo in alist:
        print(vo)

except Exception as err:
    print("SQL执行错误,原因:",err)

# 关闭数据库连接
db.close()
3.3 执行数据添加
#!/usr/bin/python3

import pymysql

#打开数据库连接
db = pymysql.connect(host="localhost",user="root",password="",db="mydb",charset="utf8")

#使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()

#定义添加sql语句
data = ("uu100",28,'w','python05')
sql = "insert into stu(name,age,sex,classid) values('%s','%d','%s','%s')"%(data)

try:
    # 使用execute()方法执行SQL 
    m = cursor.execute(sql)
    # 事务提交
    db.commit()
    print("成功操作条数:",m)
    #print("成功操作条数:",cursor.rowcount)
except Exception as err:
    #事务回滚
    db.rollback()
    print("SQL执行错误,原因:",err)

# 关闭数据库连接
db.close()
3.4 执行删除操作
#!/usr/bin/python3

import pymysql

#打开数据库连接
db = pymysql.connect(host="localhost",user="root",password="",db="mydb",charset="utf8")

#使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()

#定义删除sql语句
sql = "delete from stu where id=%d"%(100)

try:
    # 使用execute()方法执行SQL 
    cursor.execute(sql)
    # 事务提交
    db.commit()
    print("成功删除条数:",cursor.rowcount)
except Exception as err:
    #事务回滚
    db.rollback()
    print("SQL执行错误,原因:",err)

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

数据库查询操作:

  • Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

    • fetchone(): 该方法获取下一个查询结果集。结果集是一个对象,最后返回None结束

    • fetchall(): 接收全部的返回结果行.

  • rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。

附录:pip命令

------------------------------------------------------------
列出已安装的包:
    $ pip list
    $ pip freeze     # 查看自己安装的

安装软件(安装特定版本的package,通过使用==, >=, <=, >, <来指定一个版本号)**
    $ pip install SomePackage
    $ pip install 'Markdown<2.0'
    $ pip install 'Markdown>2.0,<2.0.3'

卸载软件pip uninstall SomePackage
    $ pip uninstall SomePackage

下载所需的软件包:
    $ pip download SomePackage -d directory 
    例如下载PyMySQL软件包
    $ pip download PyMySQL -d D:/pypackage

安装下载好的软件包文件
    $ pip install 目录/软件包文件名
    如安装PyMySQL软件包
    $ pip3.6 install D:/pypackage/PyMySQL-0.7.11-py2.py3-none-any.whl