Python数据库操作
2019-01-30 本文已影响0人
ququququ
一、数据库基础知识
1.名词缩写
DB(Data Base)数据库
DBMS(Data Base Management System)数据库管理系统
DBS(Data Base System)数据库系统
DBA(Data Base Administrator)数据库管理员
SQL(Structured Query Language)结构化查询语言
Primary Key 主键
Foreign Key 外键
Entity 实体
SQL语言的动词
SQL功能 | 动词 |
---|---|
数据查询 | SELECT |
数据定义 | CREATE、DROP、ALTER |
数据操纵 | INSERT 、UPDATE 、DELETE |
数据控制 | GRANT、REVOKE |
SQL的数据定义语句
操纵对象 | 创建 | 删除 | 修改 |
---|---|---|---|
表 | CREATE TABLE | DROP TABLE | ALERT TABLE |
视图 | CREATE VIEW | DROP VIEW | |
索引 | CREATE INDEX | DROP INDEX | |
数据库 | CREATE DATABASE | DROP DATABASE | ALERT DATABASE |
2.SQL中的运算符
1.算数运算
+、-、*、/、%
2.赋值运算
=
3.比较运算
=、>、<、<>(不等于)、>=、<=
4.逻辑运算
AND、OR、NOT
3.SQL支持的数据类型
常用数值类型
数据类型 | 字节数 |
---|---|
TINYINT[(M)] | 1字节 |
SMALLINT[(M)] | 2字节 |
MEDIUMINT[(M)] | 3字节 |
INT[(M)] | 4字节 |
FLOAT[(M,D)] | 4字节 |
注意:上表中M表示显示宽度,也就是最多能够显示的数字个数,与该类型的取值范围无关。若数据位数大于显示宽度,只要不超过该类型取值范围,则以实际位数显示;反之数据位数如果小于指定宽度,则以空格填充。
字符串类型
数据类型 | 字节 |
---|---|
CHAR [(M)] | M字节 |
VARCHAR[(M)] | 可变长度 |
TINYTEXT | 0~255 |
TEXT | 0~65535 |
二、第三方库
数据库操作第三方库pymysql
pymysql.Connect()参数说明
host(str): MySQL服务器地址
port(int): MySQL服务器端口号
user(str): 用户名
passwd(str): 密码
db(str): 数据库名称
charset(str): 连接编码
connection对象支持的方法
cursor() 使用该连接创建并返回游标
commit() 提交当前事务
rollback() 回滚当前事务
close() 关闭连接
cursor对象支持的方法
execute(op) 执行一个数据库的查询命令
fetchone() 取得结果集的下一行
fetchmany(size) 获取结果集的下几行
fetchall() 获取结果集中的所有行
rowcount() 返回数据条数或影响行数
close() 关闭游标对象
在MySQL创建一个表
CREATE TABLE `users` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`email` VARCHAR(255) COLLATE utf8_bin NOT NULL,
`password` VARCHAR(255) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
AUTO_INCREMENT=1 ;
使用Python脚本实现增删改查和事务处理,源码如下:
# 插入数据
sql = "insert into users (email,password) values ( '%s', '%s')" % ('example@email.com', 'password')
cursor.execute(sql)
db.commit()
# 更新数据
sql = "update users set email='%s' where id = '%s'" % ('example_update@email.com', '1')
cursor.execute(sql)
db.commit()
# 查询数据
sql = "select email,password from users where id = '%s'" % '1'
cursor.execute(sql)
db.commit()
for row in cursor.fetchall():
print("email:%s\t password:%s" % row)
print('共查出',cursor.rowcount,'条数据')
# 删除数据
sql = "delete from users where id = '%s'" % '1'
cursor.execute(sql)
db.commit()
# 打印整个表格
cursor.execute('select * from users')
for row in cursor.fetchall():
print(row)
print("共%d条数据。"%cursor.rowcount)