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的子类,用于尝试调用不支持的功能。 |