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