基于sql server数据库使用 pymssql模块来获取信息
使用过程中遇到的问题:
数据库信息中文获取乱码,解决方法:添加 charset='cp936'
import pymssql
from utils.log_utils import logger
from utils.read import base_data
data = base_data.read_ini()['mysql']
DB_CONF = {
"host": data['MYSQL_HOST'],
"user": data['MYSQL_USER'],
"password": data['MYSQL_PASSWORD'],
"database": data['MYSQL_DB']
}
class MysqlDb:
def __init__(self):
# mysql连接
self.conn = pymssql.connect(**DB_CONF, charset='cp936')
self.cur = self.conn.cursor()
# 释放资源
def __del__(self):
self.cur.close()
self.conn.close()
# 查询单条
def select_db_one(self, sql):
logger.info(f'执行查询单条sql:{sql}')
self.cur.execute(sql)
# 获取数据
result = self.cur.fetchone()
logger.info(f'sql执行结果:{result}')
return result
# 查询多条
def select_db_all(self, sql):
logger.info(f'sql执行查询多条sql:{sql}')
self.cur.execute(sql)
# 获取数据
result = self.cur.fetchall()
logger.info(f'执行结果:{result}')
return result
# 插入
def insert_db(self, sql):
try:
logger.info(f'执行插入sql:{sql}')
self.cur.execute(sql)
self.conn.commit()
except Exception as e:
logger.info("执行sql出错{}".format(e))
# 删除
def execute_db(self, sql):
try:
logger.info(f'执行删除sql:{sql}')
self.cur.execute(sql)
self.conn.commit()
except Exception as e:
logger.info("执行sql出错{}".format(e))
db = MysqlDb()
if __name__ == '__main__':
result = db.select_db_one("SELECT count(*) from dbo.COS_ORDER ")
print(result)