使用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()
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx