python兩種不一樣鏈接數據庫方式

python兩種不一樣鏈接數據庫方式


使用python來操做數據庫,第一時間都會想到MySQLdb這個庫,可是我的感受仍是peewee庫比較好用,寫出來的代碼更加規範、更加優美。這裏其餘功能就很少講了,此次以truncate table爲例子對比下兩個庫的差別!

使用MySQLdb庫來鏈接的例子

#!/usr/bin/python
#-*- coding:utf-8 -*-
#__author__ == 'chenmingle'

import MySQLdb

mysql_db = {
    "name": "test_db",
    "host": "127.0.0.1",
    "port": 3306,
    "user": "root",
    "pswd": "Password",
    "charset": 'utf8'
}

mydb = MySQLdb.connect(host=mysql_db['host'],
    user=mysql_db['user'],
    passwd=mysql_db['pswd'],
    db=mysql_db['name'])
cursor = mydb.cursor()

tables = ['domains_Conf','dnspod_Conf','jz_domains_Conf']

## create truncate query
for tab in tables:
    sql = 'truncate table %s' %(tab)
    cursor.execute(sql)

mydb.commit() # execute truncate query
cursor.close()
mydb.close()
print "Table truncated success!"

使用peewee庫來鏈接mysql例子

#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'chenmingle'

from peewee import *

mysql_db = {
    "name": "test_db",
    "host": "127.0.0.1",
    "port": 3306,
    "user": "root",
    "pswd": "Password",
    "charset": 'utf8'
}

db = MySQLDatabase(mysql_db['name'], host=mysql_db['host'], user=mysql_db['user'], passwd=mysql_db['pswd'],
                   port=mysql_db['port'], charset=mysql_db['charset'])

class BaseModel(Model):
    class Meta:
        database = db
        database.get_conn().ping(True)

class DomainsConf(BaseModel):
    class Meta:
            db_table = "domains_Conf"

    dns_id = PrimaryKeyField()
    domain_id = IntegerField(index=True)
    types = CharField(max_length=64, default='A')
    hostname = CharField(max_length=64)
    line = CharField(max_length=64, default='default')
    ttl = CharField(max_length=64, default='600')
    value = TextField()
    status = CharField(max_length=32, default='ENABLE')

class DNSPODConf(BaseModel):
    class Meta:
        db_table = "dnspod_Conf"

    dns_id = PrimaryKeyField()
    type = CharField(max_length=64, default='A')
    name = CharField(max_length=64)
    line = CharField(max_length=64, default='默認')
    line_id = CharField(max_length=64, default='0')
    ttl = CharField(max_length=64, default='60')
    value = TextField()
    status = CharField(max_length=32, default='1')

class JZDomainsConf(BaseModel):
    class Meta:
        db_table = "jz_domains_Conf"

    dns_id = PrimaryKeyField()
    domain_id = IntegerField(index=True)
    types = CharField(max_length=64, default='A')
    hostname = CharField(max_length=64)
    line = CharField(max_length=64, default='default')
    ttl = CharField(max_length=64, default='600')
    value = TextField()
    status = CharField(max_length=32, default='ENABLE')

if __name__ == '__main__':
    DomainsConf.truncate_table()
    DNSPODConf.truncate_table()
    JZDomainsConf.truncate_table()
相關文章
相關標籤/搜索