Hit9 Blog Wiki Project Links Archives
Page: First UP Pre Next Back

peewee(mysql数据库)教程

Fork me on GitHub

允许转载, 但转载请注明出处

参考:peewee

Date:2012-12-06

1.安装

首先需要安装python-mysql

然后pip install peewee安装peewee

2.连接mysql

启动mysql服务器.

进入mysql : mysql -uroot -p

建立数据库 create database mydb default character set = utf8 ; (其中设定了mydb默认编码为utf8编码)

#--*-- coding:utf-8 --*--

from peewee import *

mysql_db = MySQLDatabase("mydb", user = "root", passwd = "123456")

mysql_db.connect() #连接数据库

print mysql_db.get_conn() #获取数据库连接

不过,get_conn()不止是获取数据库连接:如果没有连接存在,新建一个。

所以我们可以使用get_conn()来实现单例数据库连接.

可以看到,两次使用建立connect()函数建立的并不是一个连接:

>>> from peewee import MySQLDatabase
>>> mysql_db=MySQLDatabase('mydb',user='root',passwd='123456')
>>> mysql_db.connect()  # 第一次
>>> mysql_db.get_conn()
<_mysql.connection open to 'localhost' at 8818204>
>>> mysql_db.connect() # 第二次
>>> mysql_db.get_conn()
<_mysql.connection open to 'localhost' at 8830e74>

另外,MySQLDatabase类还支持的初始化参数有host(字符串参数), port(数字参数), charset(字符串参数,多用"utf8")等连接MySQL服务的参数

3.建表

orm的理念是一个表对应于一个类, 字段对应于类的属性

#--*-- coding:utf-8 --*--

from peewee import *

mysql_db = MySQLDatabase("mydb", user = "root", passwd = "123456", charset = "utf8")

mysql_db.connect() #连接数据库

class MySQLModel(Model):
    class Meta:
        database = mysql_db

class User(MySQLModel): #类的小写即表名
    username = CharField() #字段声明
    email = CharField()

User.create_table() #建表, 其实create_table是一个类方法,但也可以被其实例调用

现在可以看下mysql:

mysql> desc user;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| username | varchar(255) | NO   |     | NULL    |                |
| email    | varchar(255) | NO   |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

会发现自动添加了一个自增主键id

4.CURD

create

User.create(username=unicode("小红", "utf8"), email = "someuser@github.com")

或者

>>> user=User()
>>> user.username=unicode("小红","utf8")
>>> user.email="someuser@github.com"
>>> user.save()

update

可以象上面一样使用user.save()方法来更新.如果想更新多条, 使用类UpdateQuery

注:写的有点烦了,明天继续 .2012-12-06


Support:mkdwiki