mysql笔记, 记录一些常用的东西, 学习ing
开启mysql服务 net start mysql
关闭mysql服务 net stop mysql
进入mysql服务 mysql -u root -p root是用户名称 这个时候输入数据库密码:
然后进入mysq workbeach 中 进行操作 ,或者使用命令行实现,这里使用第三方库,pymysql。
SQL命令 | 描述 |
---|---|
select | 从数据库中提取数据 |
updata | 更新数据库中的数据 |
delect | 从数据库中删除数据 |
insert into | 从数据库中插入新数据 |
create database | 创建新数据库 |
alter database | 修改数据库 |
create table | 创建新表 |
alter table | 修改数据库表 |
drop table | 删除表 |
create index | 创建索引, (搜索键) |
drop index | 删除索引 |
# 创建数据库连接
self.db = pymysql.connect(host=self.host, user=self.user,
password=self.password, database=self.databases, cursorclass=self.cursorclass)
# 创建游标 便于执行sql语气
self.cursor = self.db.cursor()
# 使用游标来执行sql语气
sql ='select * from students'
self.cursor.execute(sql)
# 得到数据表的行数
self.cursor.rowcount()
# 得到所有条数据,也就得到了版本号
self.cursor.fetchall()
# 得到第一条数据,也就得到了版本号
self.cursor.fetchone()
# 注意的是,如果是对数据库做了修改、删除、增加的操作,那么一定要commit提交,查询和创建表不需要提交
self.db.commit()
# 回滚数据
self.db.rollback()
# 关闭游标
self.cursor.close()
# 关闭数据库
self.db.close()
# 创建数据库
sql = 'create database [数据库名称] default character set utf8'
cursor.execute(sql)
# 获得当前mysql版本
sql = 'select version()'
cursor.execute(sql)
# 创建表
sql = 'create tabel if not exists [表名称][students] (
id varchar(255) not NUll, name varchar(255) not NUll
age INT not Null, primary key(id)) '
cursor.execute(sql)
# 展示表
sql = 'show tables'
cursor.execute(sql)
# 插入数据
name = '白嘉诚'
sql = f'insert into student_score(name, gender) values("{name}","男")' # 使用引号括起来
try:
cursor.execute(sql) # 执行语气
db.commit() # 如果修改了就要提交一次表单
except:
db.rollback() # 如果发生异常 执行数据回滚,重新再来
# 动态插入数据 使用字典
data = {
'id': 1,
'name': '张三炮',
'gender': '男',
'age': 12,
'score': 99
}
def fun():
data_len = "'%s', " * len(data)
data_len = data_len[:-2] # 去引号
data_len = data_len % tuple(data.values()) # 格式化
return data_len
fun()
table = 'student_score'
keys = ', '.join(data.keys())
sql = f"insert into {table}({keys}) values( {fun()})"
# 更新数据
sql = "update students set age = '[new]' where name = '[old]'"
try:
cursor.execute(sql) # 执行
db.commit() # 提交表单
except:
db.rollback() # 回滚数据
db,close()
# 删除数据
table = 'student'
condition = 'name ="张二炮"'
sql = f'delete from {table} where {condition}'
try:
cursor.excute(sql) # 执行
db.commit() # 提交表单
except:
db,rollback()
db.close()
# 查询数据
# 优质单个数据查询 占用资源少 逐行取数据, 每循环一次, 游标就会偏移一次
table = 'students'
condition = 'age >= 20'
sql = f"select * from {table} where {condition}"
try:
cursor.execute(sql) # 执行语气
print('Count:', cursor.rowcount)
row = cursor.fetchone()
while row:
print('row', row)
row = cursor.fetchone()
except:
print('ERROR')
这个是借鉴了其他博客:当时没记住作者博客ID ,搞得忘记了,知道的可以联系我, 我后续加上去
# -*- coding : utf-8 -*-
# @Time : 2020/6/8 22:09
# @author : 沙漏在下雨
# @Software : PyCharm
# @CSDN : https://me.csdn.net/qq_45906219
class MYSQL():
def __init__(self, host, user, password, database, cursorclass=None): # cursorclass将返回结果呈字典显示 ,如果传了就应用,不传就为None
self.host = host # ip地址,本机就传localhost就可以
self.user = user # 账户名,如果你没有更改过,那就是root
self.password = password # 数据库密码
self.databases = database # 你具体要连接的哪一个数据库
self.cursorclass = cursorclass # 返回结果呈字典形式 {}
def connect(self): # 创建连接数据库方法
import pymysql
# 创建数据库连接
self.db = pymysql.connect(host=self.host, user=self.user,
password=self.password, database=self.databases, cursorclass=self.cursorclass)
# 创建游标 便于执行sql语气
self.cursor = self.db.cursor()
def get_one(self, sql): # 返回一条符合条件的查询结果
result = 0
try:
self.connect()
self.cursor.execute(sql)
result = self.cursor.fetchone() # 得到第一条数据
self.close()
except Exception as e:
print('select error', e)
return result
def get_all(self, sql): # 返回全部符合条件的查询结果
result = 0
try:
self.connect() # 声明连接对象, 连接数据库
self.cursor.execute(sql) # 使用游标来执行sql语气
result = self.cursor.fetchall() # 得到所有条数据,也就得到了版本号
self.close()
except Exception as e:
print("select error", e)
return result
def __edit(self, sql): # 创建主函数
result = 1 # 设置结果集,用于调用的时候做判断
try: # 这里是使用的try语句来尝试进行操作
self.connect()
self.cursor.execute(sql)
self.db.commit() # 注意的是,如果是对数据库做了修改、删除、增加的操作,那么一定要commit提交,查询和创建表不需要提交
self.close()
except Exception as e: # 如果操作失败,报出操作异常,且游标进行回滚
print('error :', e)
result = 0
self.db.rollback()
return result
def insert(self, sql):
# 插入语句 ,以下三个都是一样的,只是调用的时候,我们看起来更加清晰而已
return self.__edit(sql) # 通过主函数的处理,来去执行sql语句
def delete(self, sql): # 删除语句
return self.__edit(sql)
def update(self, sql): # 修改语句
return self.__edit(sql)
def close(self): # 关闭方法
self.cursor.close() # 关闭游标
self.db.close() # 关闭数据库