import pymysql
class SQL:
__account = {
'user': '',
'password': ''
}
def __init__(self, _account: dict):
if 'user' in _account and 'password' in _account:
self.__account['user'] = _account['user']
self.__account['password'] = _account['password']
def __get_connect(self):
return pymysql.connect(
host='************.**.tencentcdb.com',
port=10069,
user=self.__account['user'],
password=self.__account['password'],
database='db',
charset='utf8'
)
def query_data(self, sql):
connect = self.__get_connect()
try:
cursor = connect.cursor(pymysql.cursors.DictCursor)
cursor.execute(sql)
return cursor.fetchall()
finally:
connect.close()
def update_data(self, sql):
connect = self.__get_connect()
try:
cursor = connect.cursor()
cursor.execute(sql)
connect.commit()
finally:
connect.close()
if __name__ == '__main__':
account = {
'user': 'root',
'password': 'root123456'
}
mysql = SQL(account)
try:
sql = "select * from table1 where att1 = '{ATT1}'".format(ATT1="att1")
result = mysql.query_data(query)
except Exception as e:
print(e.args[0])
print(e.args[1])
- python使用pymysql包访问数据库时,当前保留的与数据库的连接 是 程序最后一次创建的连接。当访问数据库的操作涉及账户切换时,每次以该账号执行所有访问操作,都需要重新登陆账户。避免交替更换账户出现权限不一致问题。(需要用哪个账户,就实时建立哪个连接)
import func.sql as sql
"""
root有访问Log表的权限
user无访问Log表的权限
"""
account1 = {
'user': 'root',
'password': 'root123456'
}
mysql1 = sql.SQL(account1)
account2 = {
'user': 'user1',
'password': 'user1123456'
}
mysql2 = sql.SQL(account2)
try:
print(mysql1.query_data("select * from Log"))
except Exception as e:
print(e)
account1 = {
'user': 'root',
'password': 'root123456'
}
account2 = {
'user': 'user1',
'password': 'user1123456'
}
try:
mysql = sql.SQL(account1)
print(mysql.query_data("select * from Log"))
except Exception as e:
print(e)