pycahrm连接数据库笔记

pycharm操作数据库

pycharm操作MongoDB

1.下载模块

在当前模块下查看是否存在pymongo(pip list)。如果没有,那就下载

pip install pymongo

2.使用模块

import pymongo

# 1.建立连接
client = pymongo.MongoClient() #里面可以加port,因为默认的端口都是大家熟知的,在项目环境下需要修改
# 2.指定数据库
db = client["py_49"]
# 3.指定集合
col = db["student"]

# 以前的操作(python3官方已经不推荐这些方法,当然用还是可以的)
查找文档:finr()
添加文档:insert()
修改文档:update()
删除文档:remove()

# 官方推荐的使用方法

查找一条文档:find_one()
res = col.find_one() 
print(res)

查找所有文档:find()
res = col.find() # 这样直接打印出来是一个游标地址,他是可以迭代的对象
for i in res:
print(i)

添加一条文档:insert_one()
col.insert_one({'name':'summer','age':18,'sex':'F'})

添加多条文档:insert_many()
col.insert_many([{'id':'6',name':'Summer','age':18,'sex':'F'},{'name':'July','age':18,'sex':'M'},{'name':'April','age':18,'sex':'M'}])

删除一条文档:delete_one()
col.delete_one({"name":"summer"})

删除多条文档:delete_many()
col.delete_many({"age":18})
col.delete_many({"$or"[{},{},{}]}) # 删除多条字段不一样的在{}内加入字段即可

修改一条文档:update_one()
col.update_one({"name":"Summer"},{'age':20})# 这样的话会将整个字段修改
col.update_one({"name":"Summer"},{"$set":{'age':20}})# 这样就是指定字段修改

修改多条文档:update_many()
col.update_many({"age":16},{"$set":{'age':3}})

pycharm操作Mysql

1.下载模块

pip install pymysql

2.简单操作模块

import pymysql

# 1.建立连接
第一种:
pymysql.connect(user="root",password="qwe123",db="py_49",charset="utf8")
第二种:(生产环境下)
放到单独的文件夹,然后导入,使用的是字典传参。将数据导入,然后解包

# 2.创建游标
cul = con.cursor()

# 3.使用sql语句execute
cur.execute("select * from student")

# 4.关闭游标
cur.close()

# 5.关闭连接
con.close()

以上代码运行之后,并不会产生结果,

如果使用赋值拿参,只能拿到数据的条数。

如果想要获取结果,可以使用ferchone,fetchall,fetchmany

print(cur.fetchone()) # 拿到最上面的那一条
print(cur.fetchall()) # 拿到所有条数,获取的类型为元组
print(cur.fetchmany(3)) # 获取指定条数的数据

因为在mysql环境下,当出现错误时,不能反悔。所以在这里也出现了事务功能

3.Mysql事务功能:回滚(rollback),提交(commit)

同样是在mysql环境下操作

# 开始事务
begin;

# 举栗子,插入数据
insert into student value(6,'summer',18)
注: 当这行语句运行完成以后,你重新开一个窗口去查看数据库里面的数据,会发现这条数据是没有插进去的。

# 如果想让这条数据生效,可以提交操作
commit;
注:这时你再去看,就会发现这条数据出现了
begin;

insert into student value(7,"July",18)

# 当发现数据输入错误时,你就可以进行回滚
rollback
注:回滚是回滚到最近一次的begin

commit;

其实python在操作mysql时,是自动启用事务模式的。当你插入数据时,需要将数据进行提交

cur.execute('insert into student value(11,"Misa",20)')
con.commit()

4.利用上下文管理操作mysql

import pymysql

# 1.建立连接
pymysql.connect(user="root",password="qwe123",db="py_49",charset="utf8")

# 利用上下文管理实现自动关闭
with con.cursor() as cur:
	cur.execute('select * from student')
	print(cur.fetchone())
	
with con.cursor as cur:
	cur.execute('insert into student value(7,"smile",20)')
	注:当你把这行代码运行起来之后,你还是会发现mysql中数据还是没有这一行的,因为同一的是因为没有提交
con.commit()

因为mysql里面存放的一般都是不会改变的数据,所以数据量都是巨大的,当使用select时就可能会超大量 的占用内存空间可能会时电脑黑屏,所以一般推荐的是fetchone,然后进行一些修改。

# 获取值时,为了预防数据量过大,导致内存爆炸,一般会直接使用fetchall去查询数据,处理方法如下;
with con.cursor() as cur:
	cue.execute("select * from student")
	one_date = cur.fetchone()
	while one_date:
		print(one_date)
		one_date = cur.fetchone()

pycharm操作Redis

1.下载模块

pip install redis

2.操作模块

简单回顾进入redis命令:redis-cli

import redis

# 建立连接
con = redis.StrictRedis()

# 使用reids命令
print(con.get("a")) # 得到的是字节码,如果需要可以解码

con.set("k1","v1")

因为redis默认的数据库是0(他自己有16个数据库),如果想要修改数据库,操作如下:

import redis

con = redis.StrictRedis(db=5)

con.set("k2","你好") # utf-8

print(con.get("k2").decode('utf-8'))

当然如果所有数据查看都需要decode的话会别麻烦,所以操作如下:

con = redis.StrictRedis(db=5,decode_resopnse=True)

因为redis里面的del在python中有函数重复,所以用删除语句的话就是使用’delete’

con.delete('k2')

如果想获取更多有关python的信息,和想玩python制作的小程序,可以关注微信公众号(dreamspy)。我们一起用python改变世界,一起用python创造梦想。

在这里插入图片描述

发布了43 篇原创文章 · 获赞 11 · 访问量 5418

猜你喜欢

转载自blog.csdn.net/jiangSummer/article/details/103347858