数据库的选择和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}})