pycharm与数据库交互
在做项目中或者日常工作中。使用pycharm连接数据库调用数据是必须的事情,这章节就总结pycharm连接MySQL,Redis,MongoDB数据库以及操作数据的方法。
pycharm操作MySQL
pip install pymysql 安装python连接MySQL的Api包
MySQL数据库的连接:
import pymysql
db_sql = {
'user': 'root',
'password': 'mysql',
'db': 'student',
'charset': 'utf8'
}
conn = pymysql.connect(**db_sql) #连接数据库
cur = conn.cursor() #建立游标
print(cur)
cur.close() #关闭游标
conn.close()#关闭连接 ,为了节省资源,提高机器性能,使用完成务必关闭连接与游标
输出结果:
<pymysql.cursors.Cursor object at 0x000001DE827139E8>
pycharm数据库操作:
import pymysql
db_sql = {
'user': 'root',
'password': 'mysql',
'db': 'student',
'charset': 'utf8'
}
conn = pymysql.connect(**db_sql) #连接数据库
cur = conn.cursor() #建立游标
sql = 'select * from student' #写入需要执行的SQL语句,注意:没有;号
#执行sql语句,执行后没有结果返回
cur.execute(sql)
#执行sql语句,执行后返回数据数量,不是数据内容
res = cur.execute(sql)
print(res) #
#执行后获取结果的方式
cur.execute(sql)
cur.fetchone() #获取一条数据
cur.fetchmany() #获取多条指定数据
cur.fetchall() #获取全部数据
cur.close() #关闭游标
conn.close()#关闭连接 ,为了节省资源,提高机器性能,使用完成务必关闭连接与游标
pycharm操作MySQL数据库的事务处理:
MySQL的事务流程:
begin;
需要执行的SQL语句;
commit;或者 rollback;
在pycharm中执行SQL语句是直接就执行事务的,所有不需要写begin。
但是在执行完成不知道是否正确的情况下,需要使用commit,还是rollback呢。可以使用异常捕捉来完成。
mport pymysql
db_sql = {
'user': 'root',
'password': 'mysql',
'db': 'student',
'charset': 'utf8'
}
conn = pymysql.connect(**db_sql) #连接数据库
cur = conn.cursor() #建立游标
try:
sql = 'create table student(id int primary key auto_increment,name varchar(20),sex enum("M","F"),age tinyint)'
cur.execute(sql)
sql = 'insert into student values(1,"apple","M",18),(2,"banana","F",19),(3,"pear","M",18)'
cur.execute(sql)
sql = 'select * from student'
cur.execute(sql)
resone = cur.fetchone() # 游标1
resall = cur.fetchall() # 游标从2开始
print(resone)
print(resall)
except Exception as e: #如果前面的sql语句出错,将执行except报错。
print(e)
conn.rollback() # 出现报错,sql回滚
finally:
conn.commit() #无报错,执行提交
cur.close()
conn.close()
输出:
(1, 'apple', 'M', 18)
((2, 'banana', 'F', 19), (3, 'pear', 'M', 18))
pycharm操作redis非关系数据库
在python中,操作redis命令和命令行操作的用户几乎一摸一样。
首先导入库:安装redis :pip install redis
链接数据库:redis.StrictRedis('host':'IP',decode_response=True)
import redis
res = redis.StrictRedis(host= '192.168.0.102',decode_responses=True) #l连接数据库
print(res)
输出:
Redis<ConnectionPool<Connection<host=192.168.0.102,port=6379,db=0>>>
Process finished with exit code 0
import redis
a = redis.StrictRedis(decode_responses=True,db=1) #在连接时出错,可以将IP去掉连接,db=1是转换数据库使用 。
print(a)
a.set('sex','M')
print(a.keys())
print(a.get('name'))
输出:
Redis<ConnectionPool<Connection<host=localhost,port=6379,db=1>>>
['age', 'name', 'sex']
tom
Process finished with exit code 0
pycharm操作MongoDB
1、数据库的安装
pip install pymongo 安装pymongo
2、数据库的连接
client = pymongo.MongoClient() 连接MongoDB数据库
db = client(数据库名) 指定数据库:
collection = db(集合名) 指定集合:
import pymongo
client = pymongo.MongoClient()
db = client['db_name'] #指定数据库名
my_col = db['tb_name'] #指定集合名
3、文档操作
1)查找文档
操作命令 | 命令描述 |
---|---|
find() | (Python3官方不推荐的方法,但是可以使用) |
find_one() | 查找一条数据(官方建议使用方法) |
find() | 查找所有数据 |
import pymongo
client = pymongo.MongoClient()
db = client['lxp']
my_col = db['student']
res = my_col.find_one()
print('查询一条数据:{}'.format(res))
rest = my_col.find() #查询所有数据后需要遍历打印出来
for i in rest:
print('查询所有数据{}'.format(i))
输出:
查询一条数据:{'_id': ObjectId('5cbf0c144a42384099f61fd1'), 'name': 'ooo'}
查询所有数据{'_id': ObjectId('5cbf0c144a42384099f61fd1'), 'name': 'ooo'}
查询所有数据{'_id': 1.0, 'name': 'bbb', 'age': 18.0, 'sex': 'M'}
查询所有数据{'_id': ObjectId('5cbf0de04a42384099f61fd4'), 'name': 'eee', 'age': 22.0, 'sex': 'M'}
Process finished with exit code 0
添加文档:
操作命令 | 命令描述 |
---|---|
insert() | (Python3官方不推荐的方法,但是可以使用) |
insert_one | 插入一条数据(官方建议使用方法) |
insert_many() | 插入多条数据 |
import pymongo
client = pymongo.MongoClient()
db = client['lxp']
my_col = db['student']
res = my_col.find()
for i in res:
print('插入数据前的数据:{}'.format(i))
my_col.insert_one({'name':'apple','age':20,'sex':'M'})
#print('查询一条数据:{}'.format(res))
my_col.insert_many(({'name':'banana','age':23,'sex':'F'},{'name':'pear','sex':'M','age':24}))
rest = my_col.find()
for i in rest:
print('插入后的数据{}'.format(i))
输出结果:
插入数据前的数据:{'_id': ObjectId('5cbf0c144a42384099f61fd1'), 'name': 'ooo'}
插入数据前的数据:{'age': 18.0, 'sex': 'M', '_id': 1.0, 'name': 'bbb'}
插入数据前的数据:{'age': 22.0, 'sex': 'M', '_id': ObjectId('5cbf0de04a42384099f61fd4'), 'name': 'eee'}
插入数据前的数据:{'age': 20, 'sex': 'M', '_id':
插入后的数据{'_id': ObjectId('5cbf0c144a42384099f61fd1'), 'name': 'ooo'}
插入后的数据{'age': 18.0, 'sex': 'M', '_id': 1.0, 'name': 'bbb'}
插入后的数据{'age': 22.0, 'sex': 'M', '_id': ObjectId('5cbf0de04a42384099f61fd4'), 'name': 'eee'}
插入后的数据{'age': 20, 'sex': 'M', '_id':
插入后的数据{'age': 20, 'sex': 'M', '_id': ObjectId('5cc3f7a392ba689595e11bde')