1.1.1 安装

  1. pip install peewee
  2. pip install pymysql
  3. pip install cryptography

1.1.2 定义表结构

  1. # 1. 定义并生成表
  2. import datetime
  3. from peewee import *
  4. db = MySQLDatabase('peewee', host='127.0.0.1', user='root', passwd='root');
  5. class User(Model):
  6. username = CharField(unique=True)
  7. class Meta:
  8. database = db
  9. class Tweet(Model):
  10. user = ForeignKeyField(User, backref='tweets')
  11. message = TextField()
  12. created_date = DateTimeField(default=datetime.datetime.now)
  13. is_published = BooleanField(default=True)
  14. class Meta:
  15. database = db

1.1.3 生成数据表

  1. db.connect()
  2. db.create_tables([User, Tweet])

1.1.4 添加/更新/删除/查询

  1. # 2.添加
  2. # charlie = User(username="charlie") # update set age = 18 where username ="charlie"
  3. # rows = charlie.save()
  4. # if rows == 0:
  5. # print("未更新数据")
  6. # charlie.save(force_insert=True) # 1.save方法既可以完成新建. 也可以完成更新的操作(你的对象钟主键值是否有设置你是一个更新的操作)
  7. # huey = User.create(username="huey")
  8. # 3.查询
  9. # 3.1 get方法
  10. # 1.返回回来的是直接的user对象
  11. # 2.这个方法如果查询不到会抛出异常
  12. try:
  13. # charlie = User.get(User.username == "charlie")
  14. charlie = User.get_by_id("chalie")
  15. print(charlie.username)
  16. # 这个操作发起的sql请求是什么
  17. except User.DoesNotExist as e:
  18. print("查询不到")
  19. # 3.2 select操作 查询所有
  20. # users = User.select()
  21. # 1.没有看到sql查询语句,用于组装sql
  22. # 2.对象是 ModelSelect 对象 我们对 ModelSelect 进行for循环和切片的时候才会发起请求
  23. # print(users.sql())
  24. # print(type(users))
  25. # user = users[0]
  26. # print(type(user))
  27. # usernames = ["charlie", "huey", "mickey"]
  28. # users = User.select().where(User.username.in_(usernames))
  29. # for user in users:
  30. # print(user.username)
  31. # for user in User.select():
  32. # print(user.username)
  33. # 更新
  34. charlie = User(username="charld2ie") # update set xx=xx where username="charlie"
  35. print(charlie.save())
  36. # 使用update更新
  37. print(User.update(age=15).where(User.username == "charlie").execute())
  38. # 删除数据
  39. user = User.get(User.username == "charld2ie")
  40. user.delete_instance()

1.1.5 解决peewee的warning