Django-Pymysql基础

Django-Pymysql基础

Pymysql是用于Python和Mysql数据库交互的一个驱动(而且是一个纯python库)

1.安装

  • 在terminal终端中输入 pip install pymysql

2.主要方法

2.1pymysql.connect()参数说明:(连接数据库时需要添加的参数)

参数名 含义
host(str) MySQL服务器地址
port(int) MySQL服务器端口号
user(str) 用户名
passwd(str) 密码
db(str) 数据库名称
charset(str) 连接编码

2.2connect()对象支持的方法:

参数名 含义
cursor() 使用该连接创建并返回游标
commit() 提交当前事务
rollback() 回滚当前事务
close() 关闭连接

2.3cursor对象支持的方法:

参数名 含义
execute(op) 执行一个数据库的查询命令
fetchone() 取得结果集的下一行
fetchmany(size) 获取结果集的下几行
fetchall() 获取结果集中的所有行
rowcount() 返回数据条数或影响行数
close() 关闭游标对象

3.一个实例

先在mysql中创建一个用于操作的库和表

create database text;
use text;
create table text1(id  int(11) primary key, name varchar(11)  not null, add varchar(20) ,tel int(11) )

使用python脚本实现对mysql表中数据的增删改查:

import pymysql
# 连接数据库
connect = pymysql.Connect(
    host='localhost',
    port=3306,
    user='root',
    passwd='123456',
    db='text',
    charset='utf8'
)


# 获取游标
cursor = connect.cursor()


# 插入数据
sql = "insert into text1 (id, name, add,tel) VALUES ( %s, '%s', '%s', %s )"
data = (1, '成甲', '杭州', '123456')
cursor.execute(sql % data)
connect.commit()  
#注意操作进行完之后记得提交事务
print('插入成功')


# 修改数据
sql = "updata text1 set name ='成已' WHERE name = '成甲' "
cursor.execute(sql)
connect.commit()
print('修改成功')


# 查询数据
sql = "selete name from text1 where name = '%s' "
data = ('成已',)
cursor.execute(sql % data)
#返回查找到的所有
print(cursor.fetchall())


# 删除数据
sql = "delete from text1 where id = %s "
data = ( 1)
cursor.execute(sql % data)
connect.commit()
print('删除成功')


# 关闭连接
cursor.close()
connect.close()

4.其他

出现缺少mysqlclient

安装mysql依赖包:
pip install -i https://pypi.douban.com/simple mysqlclient
#如果载不了,换源尝试一下
  阿里云 http://mirrors.aliyun.com/pypi/simple/ 
  中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 
  豆瓣(douban) http://pypi.douban.com/simple/ 
  清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/ 
如安装该包出错。下载新包:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
import pymysql
import PyMySql 是不一样的
  • 在setting中改变database
DATABASES ={
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'student',  #注意了,这个数据库名django不能创建,你自己需要先创建数据库
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

创建表

create_table = """create table `text` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;"""
 
cursor.execute(create_table)
db.close()

DB API定义了每个数据库模块中必须存在的许多错误。下表列出了这些异常和错误 :

编号 异常 描述
1 Warning 用于非致命问题,是StandardError的子类。
2 Error 错误的基类,是StandardError的子类。
3 InterfaceError 用于数据库模块中的错误,但不是数据库本身,是Error的子类。
4 DatabaseError 用于数据库中的错误,是Error的子类。
5 DataError DatabaseError的子类引用数据中的错误。
6 OperationalError DatabaseError的子类,涉及如丢失与数据库的连接等错误。 这些错误通常不在Python脚本程序的控制之内。
7 IntegrityError DatabaseError 子类错误,可能会损害关系完整性,例如唯一性约束和外键。
8 InternalError DatabaseError的子类,指的是数据库模块内部的错误,例如游标不再活动。
9 ProgrammingError DatabaseError的子类,它引用错误,如错误的表名和其他安全。
10 NotSupportedError DatabaseError的子类,用于尝试调用不支持的功能。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章