相信的心就是你的魔法

pymysql在Python中的使用

1
import pymysql

1.和mysql建立连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
"""
连接对象 = pymysql.connect(host,port,user,password) - 和指定mysql建立连接并且返回一个连接对象

说明:
host - mysql主机地址(localhost表示当前设备上的mysql, 服务器公网ip)
port - mysql服务端口, 3306
user - mysql用户
password - 用户对应的密码(如果创建用户的时候没有设置密码,这个参数可以不用赋值)
database - 建立连接后默认操作的数据库
charset - 设置连接的数据库文件的编码方式
autocommit - 是否自动提交
"""
con = pymysql.connect(
host='localhost',
port=3306,
user='root',
password='yuting123456',
database='school',
charset='utf8',
autocommit=True
)

2.通过连接获取游标对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
"""
with 连接对象.cursor(查询返回值类型=None) as 游标对象:
数据库操作上下文

说明:
查询返回值类型 - None: 查询结果以元组的形式返回;
pymysql.cursors.DictCursor: 查询结果以字典的形式返回
数据库操作上下文 - 游标对象(数据库操作)只有在数据库操作上下文才有效
"""
with con.cursor() as cursor:
# 数据库操作上下文
# 3.执行sql语句: 游标对象.execute(sql语句)
cursor.execute('create database if not exists pyschool;')

# 关闭连接
con.close()

3.在Python中对表的操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135

def query_table(connect):
# 注意: 执行查询的sql语句,查询结果保存在游标对象中的
# 游标对象.fetchall()
sql_str = 'select * from tb_student;'
with connect.cursor(pymysql.cursors.DictCursor) as cursor:
result = cursor.execute(sql_str)
print(result, cursor)

# 注意: cursor中的查询结果,取一个就少一个
# 1. 游标对象.fetchall() - 获取当前查询的所有的结果
# all_result = cursor.fetchall()
# print('查询结果的个数:', len(all_result))
# for dic in all_result:
# print(dic['stuname'])
#
# all_result2 = cursor.fetchall()
# print(all_result2)

# 2. 游标对象.fetchone() - 获取当前查询中一条数据
print(cursor.fetchone())
print(cursor.fetchone())

# 3. 游标对象.fetchmany(size) -- 获取当前查询中指定条数的数据
print(cursor.fetchmany(2))



def operate_table(connect):
"""增删改"""
# 1.增
# sql_str = '''
# insert into tb_student
# (stuname, stusex, stuage, setutel)
# values
# ('张三', 1, 30, '17823736452'),
# ('stu1', 0, 28, '16728729739');
# '''
print('=========插入学生==========')
sql_str = 'insert into tb_student (stuname, stusex, stuage, setutel) values %s;'
str2 = ''
while True:
name = input('请输入名字:')
sex = int(input('请输入性别(0/1):'))
age = int(input('请输入年龄:'))
tel = input('请输入电话号码:')
value = input('是否继续添加(y/n):')
str2 += "('%s', %d, %d, '%s')," % (name, sex, age, tel)

if value == 'n':
print(str2[:-1])
sql_str = sql_str % str2[:-1]
print(sql_str)
break

with connect.cursor() as cursor:
cursor.execute(sql_str)





def create_table(connect):
"""创建表"""
with connect.cursor() as cursor:
# 1.=========创建学生表=========
try:
sql_str = '''
create table tb_student
(
stuid int auto_increment,
stuname varchar(10) not null,
stuage int,
stusex bit default 1,
setutel varchar(11),
primary key (stuid)
);
'''
cursor.execute(sql_str)
except:
pass

# 自定制表
# table_name = input('表名:')
# pre = table_name[:3]
# cnames = []
# while True:
# cname = input('请输入字段名(q-退出):')
# if cname == 'q':
# break
# cnames.append(pre+cname+' text,')
#
# str1 = '''
# create table if not exists tb_%s
# (
# %sid int auto_increment,
# %s
# primary key (%sid)
# );
# '''
#
# sql_str = str1 % (
# table_name,
# table_name[:3],
# ' '.join(cnames),
# table_name[: 3]
# )
# print(sql_str)
# cursor.execute(sql_str)



def main():
# 1.建立连接
con = pymysql.connect(
host='localhost',
user='root',
password='yuting123456',
port=3306,
charset='utf8',
autocommit=True
)

# 2.切换数据库
with con.cursor() as cursor:
cursor.execute('use pyschool;')

# 3.创建表
create_table(con)

# 4.操作表
operate_table(con)

# 5.查询数据
query_table(con)

DCL(数据控制语言)

DCL主要提供授权和召回授权以及事务等相关功能

1.用户管理(root账号才有的权限)

1)创建用户

create user '用户名'@'登录地址'; - 创建数据库用户,该用户登录不需要密码

create user '用户名'@'登录地址' identified by '密码';

说明:

用户名 - 随便命名

登录地址 - ip地址/localhost(本机)/%(任意位置)

1
2
CREATE USER 'user1'@'localhost';
CREATE user 'user2'@'%' IDENTIFIED by '123456';
阅读全文 »

1.E.R实体关系图

E.R实体关系图是通过图标的形式来表示数据库中表和字段以及表和表之间的关系。

表和表之间的关系主要有四种:一对一,一对多,多对一,多对多

E.R实体关系图示例

2.外键约束

什么是外键约束

外键约束就是:让字段的值的取值范围在另外一张表的主键中

怎么添加外键约束

1)保证当前表中有一个字段能够保存另外一张表的主键
2)添加外键约束
阅读全文 »

1.sql基础

sql又叫结构化查询语言,分为三大类:DDL(数据定义语言)、DML(数据操作语言)、DCL(数据控制语言)

  • DDL:create(创建数据库和表)、drop(删除数据库和表)、alter(修改数据库和表)
  • DML:insert(增)、delete(删)、update(改)、select(查)
  • DCL:grant(授权)、revoke(召回授权)

sql的注释是在注释前加–;sql中sql的关键字不区分大小写;sql语句结束后需要加分号

2. DDL(数据定义语言)

2.1 数据库操作

2.1.1 创建数据库

create database 数据库名称; - 创建指定数据库,如果这个数据库已经存在,会报错

create database if not exists 数据库名称; - 当指定数据库不存在的时候创建对应的数据库

create database if not exists 数据库名称 default charset utf8; - 创建数据库的时候指定数据库文件的编码方式

阅读全文 »

shell编程

Shell脚本,是一种为shell编写的脚本程序。

Shell编程跟JavaScript、Python编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。

Linux的Shell种类有很多,我们主要用的是Bourne Shell(/usr.bin/sh或/bin/sh)

1.创建shell文件

原则上shell程序可以写在任何文件中,但是一般会在shell文件后加后缀.sh表示当前文件是一个shell文件

shell需要可执行权限,所以创建好的shell文件需要添加x权限

2.基础语法

1)注释
1
2
3
4
5
6
# 单行注释
:《(此处为两个小于符号)EOF
多行注释1
多行注释2
...
EOF
阅读全文 »