python mysql数据库封装类

Python MySQL数据库封装类

Python是一种高层次、面向对象、解释性编程语言。MySQL是最流行、免费的开源数据库。在Python中,MySQL通过MySQLdb或PyMySQL等驱动程序进行访问。

MySQLdb是在Python 2.x环境下MySQL的标准API,基于Python DB API 2.0规范,支持Python和MySQL不同版本的兼容性。而PyMySQL是一个纯Python实现的MySQL客户端库,支持Python 2.x和3.x版本,与MySQL的兼容性较好。

使用Python访问MySQL时,需要通过SQL语言执行各种操作如查询、插入、更新和删除等。为了简化这些操作,可以使用MySQL数据库封装类。此类自动处理数据库连接和断开,同时封装了各种SQL操作。因此,使用此类可以更容易、有效地处理数据库。

下面是一个MySQL数据库封装类示例:

``` python

import MySQLdb

class MySQLDb(object):

def __init__(self, host, user, password, db, charset='utf8', port=3306):

self.host = host

self.user = user

self.password = password

self.db = db

self.charset = charset

self.port = port

self.conn = None

self.cursor = None

def __enter__(self):

try:

self.conn = MySQLdb.connect(host=self.host, user=self.user,

password=self.password, db=self.db, charset=self.charset, port=self.port)

self.cursor = self.conn.cursor()

except Exception as e:

print('Failed to connect to database:', str(e))

return self

def __exit__(self, exc_type, exc_val, exc_tb):

self.cursor.close()

self.conn.close()

def execute(self, sql, args=None):

self.cursor.execute(sql, args)

return self.cursor.fetchall()

def insert(self, table, fields=(), values=()):

if len(fields) != len(values):

raise ValueError('Number of fields and values not match')

if not isinstance(fields, (tuple, list)):

raise ValueError('Fields must be tuple or list')

if not isinstance(values, (tuple, list)):

raise ValueError('Values must be tuple or list')

sql = 'INSERT INTO %s (%s) VALUES (%s)' % (table, ','.join(fields), ','.join(['%s'] * len(values)))

return self.cursor.execute(sql, values)

def select(self, table, fields='*', where=None):

sql = 'SELECT %s FROM %s' % (fields, table)

if where:

sql += ' WHERE ' + where

self.cursor.execute(sql)

return self.cursor.fetchall()

def update(self, table, fields=(), values=(), where=None):

if len(fields) != len(values):

raise ValueError('Number of fields and values not match')

if not isinstance(fields, (tuple, list)):

raise ValueError('Fields must be tuple or list')

if not isinstance(values, (tuple, list)):

raise ValueError('Values must be tuple or list')

sql = 'UPDATE %s SET %s' % (table, ','.join(['%s=%s' % (fields[i], '%s') for i in range(len(fields))]))

if where:

sql += ' WHERE ' + where

return self.cursor.execute(sql, values)

def delete(self, table, where=None):

sql = 'DELETE FROM %s' % table

if where:

sql += ' WHERE ' + where

return self.cursor.execute(sql)

```

使用此类可以方便地执行各种SQL操作。例如,执行SELECT语句:

``` python

with MySQLDb('localhost', 'root', 'password', 'test') as db:

data = db.select('user', '*', 'id=1')

print(data)

```

此代码使用MySQLDb实例连接数据库“test”,并从“user”表中选择所有列,其中“id”等于1。

在此示例中,“__enter__”和“__exit__”方法允许将类实例与“with”语句一起使用,以确保数据库连接的正确开启和关闭。这样,即使代码抛出异常,数据库连接也将正确地关闭。

Python温度转换错误

在Python中进行温度转换时,需要注意不同的温度单位之间有一个固定的转换公式。例如,将华氏度转换为摄氏度的公式为:

C = 5/9 * (F - 32)

其中“C”表示摄氏度,“F”表示华氏度。

但是,当使用不正确的公式进行转换时,可能会出现Python温度转换错误。例如,如果使用以下代码将摄氏度转换为华氏度:

``` python

def c_to_f(c):

f = c*1.8 + 32

return f

```

此代码错误地使用了乘以1.8的方法进行转换,而实际上应该使用乘以9/5的方法:

``` python

def c_to_f(c):

f = c*9/5 + 32

return f

```

因此,在进行Python温度转换时,应该始终检查和验证使用的转换公式。常见的温度单位包括摄氏度、华氏度、开尔文等。

总结

Python MySQL数据库封装类可以简化Python操作MySQL的过程。此类自动处理数据库连接和断开,封装了各种SQL操作,可以更容易、有效地处理数据库。在使用此类时,应始终检查和验证使用的转换公式。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.ynyuzhu.com/

点赞(29) 打赏

评论列表 共有 1 条评论

离夏惜柚子 1年前 回复TA

彩的礼花即将燃放,期盼的美酒就要品尝,新年的钟声亟待敲响,有一愿望仍萦绕耳旁,就是要祝福远方的战友新年吉祥幸福安康!

立即
投稿
发表
评论
返回
顶部