python两种不同连接数据库方式

本文对比了使用Python操作数据库的两种方法:MySQLdb和Peewee库。通过具体的truncate table操作示例,展示了两种库的代码实现方式,Peewee库提供了更简洁、规范的代码风格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

转载于:https://blog.51cto.com/legehappy/2163381

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值