pymysql、pymongo基本操作与示例

255 阅读4分钟

我正在参加「掘金·启航计划」

pymysql库基本操作

pymysql提供connect()方法连接数据库。

connect(host,port,user,password,db,charset,connect_timeout,use_unicode)

  • host,数据库所在主机的IP主机地址,若数据库位于本机,可设为localhost。

  • port,数据库占用的端口,通常为3306,默认为0。

  • user,连入数据库时使用的用户名。

  • password,数据库密码。

  • db,表示插入数据库时的编码。

  • charset,表示通信采用的编码方式,推荐使用utf8。

  • connect_timeout,表示连接超时时间,以秒为单位,默认为10。

  • use_unicode,表示结果以unicode字符串的格式返回,默认为None

    调用函数后生成一个connect对象,有如下操作方法。

    ​ connect对象常用的操作方法

方法说明
close()关闭连接
commit()提交当前事务
rollback()回滚当前事务。事务回滚是指,事务在运行过程中因发生某种故障而不能继续执行,使得系统将事务中对数据库的所有已完成的更新操作全部撤销,将数据库返回到事务开始时的状态。
cursor()创建并返回cursor()游标对象

​ 游标cursor对象常用的方法

方法说明
close()关闭游标
execute(sql)执行sql语句
executemany(sql)执行多条sql语句
fetchone()获取执行结果的第一条记录
fetchmany(n)获取执行结果的前n条记录
fetchall()获取执行结果全部记录
scroll()用于游标滚动

定义元组类型数据,创建MySQL数据库和表,并对数据库进行插入,更新,删除和查询数据等操作,输出查询的记录。

# 创建数据库student_sql
import pymysql 

db =pymysql.connect(host = "localhost", port =3306, user ='root',password ='hscing321')
cursor = db.cursor()
cursor.execute("CREATE DATABASE IF NOT EXISTS student_sql Character Set UTF8MB4")
cursor.close()
db.close()

# 连接MySQL,并选择student——sql数据库
import pymysql
db = pymysql.connect(host = "localhost", port =3306, user ='root',password ='hscing321',db='student_sql')# 连接MySQL
cursor = db.cursor() #获取操作游标
sql = 'CREATE TABLE IF NOT EXISTS students(id CHAR(20), name CHAR(20),age INT)' #创建数据库student_sql
cursor.execute(sql) # 执行sql语句
student = (('0001','bob',12),
           ('0002','lucy',10),
           ('0003','kate',11)) #定义数据
try:
    sql = 'INSERT INTO students(id,name,age) VALUES (%s,%s,%s)'
    cursor.executemany(sql,student)
    db.commit() #提交到数据库执行
    sql = 'SELECT * FROM students' #查询数据
    cursor.execute(sql)
    results = cursor.fetchall()
    print('插入数据后的所有记录:',results)
    #SQL更新数据语句
    sql = 'UPDATE students SET age = %s WHERE name = %s'
    cursor.execute(sql,(13, 'Bob'))
    db.commit()
    sql = 'SELECT * FROM students'
    cursor.execute(sql)
    results = cursor.fetchall()
    print('更新数据后的所有记录:',results)
    #删除数据语句,删除age小于等于10的记录
    sql = 'DELETE FROM students WHERE age <= 10'
    cursor.execute(sql)
    db.commit()
    sql = 'SELECT * FROM students'
    cursor.execute(sql)
    results = cursor.fetchall()
    print('删除age小于等于10的数据后的所有记录:',results)
except:
    db.rollback()
cursor.close()
db.close()    

Quicker_20221001_230837

pymongo库基本操作

  • pymongo库的使用MongoClient类连接数据库,须指定连接的数据库地址(如localhost)和端口(默认为27017),返回MongoClient对象。 使用MongoClient对象选择数据库,语法格式为"对象.数据库名"(也可写为"对象['数据库名']"),如果数据库不存在则新建一个数据库,返回Database对象。使用Database对象选择集合,语法格式为"对象.集合名",如果集合不存在则新建立一个集合,返回Collection对象。
  • MongoClient对象提供了drop_database()方法删除数据库

​ Collection对象常用的方法

方法说明
insert_one()插入一条记录,参数是字典键值对
insert_many()插入多条记录,参数是字典列表
find_one()查询一条记录,参数是字典键值对,返回一个字典
find()查询多条记录,参数是字典键值对,返回一个字典列表
count()查询记录计数
update_one()更新集合中的一条记录,第一个参数为查询的条件,第二个参数为更新的字段
update_many()更新集合中的多条记录,第一个参数为查询的条件,第二个参数为更新的字段
delete_one()从集合中删除一条记录,参数为查询的条件
delete_many()从集合中删除多条记录,参数为查询的条件
sort()升序或降序排列记录,第一个参数为要排序的字段,第二个参数指定排序规则,1为升序,-1为降序,默认升序

​ 查询条件:比较符号

符号描述示例说明
$lt小于{'id':{''$lt':4}}id值小于4
$gt大于{'id':{'$gt':4}}id值大于4
$lte小于等于{'id':{'$lte':4}}id值小于等于4
$gte大于等于{'id':{'$gte':4}}id值大于等于4
Sne不等于{'id':{'$ne':4}}id值不等于4
$in在范围内{'id':{'$in':[4:8]}}id值等于4或8
$nin不在范围内{'id':{'$nin':[4,8]}}id值不等于4和8

查询条件:功能符号

符号描述示例说明
$regex匹配正则表达式{ 'name': { '$regex ':'^J.*'}}name值以 “J” 开头
$exists属性是否存在{ 'name': { '$exists':True}}name 属性存在
$type类型判断{ 'name': { '$type':'str'}}name 值的类型为字符串
$text文字查询, 属性是否包含字符串{ 'name': { '$text':'Jack'}}name 属性中包含 “Jack” 字符串
$where高级条件查询{ '$where':'obj.id= obj.name'}id值等于name值

定义字典列表,创建字典列表,创建MongoDB数据库和集合,并对数据库进行添加、删除、修改、排序和查询数据等操作,输出查询的记录。

import pymongo
# 创建MongoClient类对象
myclient =pymongo.MongoClient(host = "localhost", port = 27017)
mydb = myclient.test #选择数据库,如果不存在则新建一个数据库
collection = mydb.student #选择集合,如果不存在则新建一个集合
# 定义字典列表
list = [{'id':'001','name':'小明','age':10},
        {'id':'002','name':'小红','age':11},
        {'id':'003','name':'小刚','age':11},
        {'id':'004','name':'小蓝','age':12}]
collection.insert_many(list)
print('添加数据后的所有记录:')
for i in collection.find():
    print(i)
print('第一个age为11的记录:\n',collection.find_one({'age':11}))
print('所有age为11的记录:')
for i in collection.find({'age':11}):
    print (i)
collection.delete_one({'id':'003'})
print('删除第一个id为"003"后的所有记录输出:')
for i in collection.find():
    print (i)
#将第一个age为12的记录改成age为10
collection.update_one({'age':12},{'$set':{'age':10}})

print('将第一个age为12的记录改成age为10的所有记录输出:')
for i in collection.find():
    print (i)
# 查询排序后的所有记录并输出
for i in collection.find().sort('age'):
    print(i)

Quicker_20221001_230822

可以关注的我微信公众号一起交流:随机的空中城堡