数据库的选择和ORM
MariaDB关系数据库 peewee
#创建实列
db = MySQLDatabase('my_database', user='my_user', password='my_password',
host='localhost', port=3306)
sqlite关系数据库 peewee
db = SqliteDatabase('bk.db') #创建实列
#定义一个用户表模型
class User(Model):
id = PrimaryKeyField()
username = CharField(unique=True,max_length=150)
password = CharField(max_length=150)
cookie = CharField(null=True)
class Meta:
database = db
#定义一个文章表
class Wenzhang(Model):
id = AutoField(primary_key=True)
biaoti = CharField()
neirong = TextField()
yulan = CharField()
fenlei = IntegerField()
date = CharField()
#这里用于每次保存时间和内容字段的时候都将自动获得时间和html转码
def save(self, *args, **kwargs):
if not self.date:
self.date = datetime.now().strftime('%Y-%m-%d %H:%M:%S') #自动保存时间
self.yulan = fn.SUBSTR(self.neirong, 1, 220) #存储文章预览120字
#self.neirong = html.unescape(self.neirong) #html转码
return super().save(*args, **kwargs)
class Meta:
database = db
#如果是第一次运行需要要进行数据库创建,请删除下面的注释运行一次即可,运行完等数据库创建好后立即把下面的再注释上
# db.connect()
# db.create_tables([User,Wenzhang,Mingyan,Duanlian,Liuyan]) #如果有新添加的模型,一定要在这里添加进去
# db.close()
调用查询:
# 查询文章列表,按照日期倒序排序,查10条数据
jieguo = Wenzhang.select().where(Wenzhang.fenlei == type1).order_by(Wenzhang.id.desc()).offset(offset).limit(10)
插入数据:
user = User(username='john', password='john@example.com')
user.save()
微型NoSql数据库
TinyDB 可以搜索
LevelDB 不可以搜索
MongoDB数据库 mongolite
连接:
from mongolite import Connection
# 连接 MongoDB 数据库
conn = Connection(host='localhost', port=27017)
# 选择数据库
db = conn['mydb']
# 选择集合
coll = db['mycoll']
插入:
# 插入单个文档
coll.insert({'name': 'Alice', 'age': 25})
# 插入多个文档
coll.insert([
{'name': 'Bob', 'age': 30},
{'name': 'Charlie', 'age': 35}
])
更新:
# 更新单个文档
coll.update({'name': 'Alice'}, {'$set': {'age': 26}})
# 更新多个文档
coll.update({'age': {'$gte': 30}}, {'$inc': {'age': 1}}, multi=True)
查询:
# 查询单个文档
doc = coll.find_one({'name': 'Alice'})
print(doc)
# 查询多个文档
docs = coll.find({'age': {'$gte': 30}})
for doc in docs:
print(doc)
删除:
# 删除单个文档
coll.remove({'name': 'Alice'})
# 删除多个文档
coll.remove({'age': {'$gte': 35}})