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()