大数据 爬虫Python AI Sql

Peewee 上手

2017-04-01  本文已影响155人  海上牧云l

peewee是python编写的ORM,ORM是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换,从效果上说,它其实是创建了一个可在编程语言里使用的--“虚拟对象数据库”,意思就是通过程序语言操作数据库。

peewee提供多种数据库的使用,Sqlite、MySQL、Postgresql。

这里以mysql为例子,介绍一些基本用法。

创建数据库

CREATE DATABASE test
DEFAULT CHARSET utf8
COLLATE UTF8_GENERAL_Ci;

连接数据库

from peewee import MySQLDatabase, Model, CharField

db = MySQLDatabase(
    host='127.0.0.1',
    user='root',
    passwd='root',
    database='test',
    port=3306
)
db.connect()

数据操作

class Student(Model):
    stu_num = CharField()
    name = CharField()
    stu_class = CharField()

    class Meta:
        database = db

db.create_table(Student)

# 也可同时建立多个表
db.create_tables([table1, table2, ...])
# 第一种
stu = Student(stu_num='test', name='kirito', stu_class='三年二班')
stu.save()
# 第二种
Student.create(stu_num='test', name='kirito', stu_class='三年二班')
读取所有数据
for stu in Student.select():
    print('{}\n{}\n{}\n'.format(
        stu.stu_num, stu.name, stu.stu_class))
筛选数据
stu = Student.select().where(Student.name == 'kirito').get()
print(stu.name)

更新数据
stu.name == 'leo'
stu.save()

删除数据
 herb_mittens.delete_instance() 
建立一个和student关联的表
class Book(Model):
    book_name = CharField(max_length=50)
    belong_to = ForeignKeyField(Student, related_name='books')

    class Meta:
        database = db

通过student查询属于他的所有book, 这里有两种方法,第二种要好

两次for循环
for stu in Student.select():
    for book in stu.books:
        print(book.book_name)
一次for循环
query = (Book.select(Book, Student).join(Student))
for book in query:
    print(book.book_name)
上一篇 下一篇

猜你喜欢

热点阅读