Files
yakpanel-core/class/panelMssql.py
2026-04-07 02:04:22 +05:30

120 lines
4.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#coding: utf-8
# +-------------------------------------------------------------------
# | YakPanel Windows 面板
# +-------------------------------------------------------------------
# | Copyright (c) 2015-2099 YakPanel(www.yakpanel.com) All rights reserved.
# +-------------------------------------------------------------------
# | Author: 沐落 <cjx@yakpanel.com>
# +-------------------------------------------------------------------
import re,os,sys,public
class panelMssql:
__DB_PASS = None
__DB_USER = 'sa'
__DB_PORT = 1433
__DB_HOST = '127.0.0.1'
__DB_CONN = None
__DB_CUR = None
__DB_ERR = None
__DB_SERVER = 'MSSQLSERVER'
__DB_CLOUD = 0 #远程数据库
def __init__(self):
self.__DB_CLOUD = 0
def set_host(self,host,port,name,username,password,prefix = ''):
self.__DB_HOST = host
self.__DB_PORT = int(port)
self.__DB_NAME = name
if self.__DB_NAME: self.__DB_NAME = str(self.__DB_NAME)
self.__DB_USER = str(username)
self._USER = str(username)
self.__DB_PASS = str(password)
self.__DB_PREFIX = prefix
self.__DB_CLOUD = 1
return self
def __Conn(self):
"""
连接MSSQL数据库
"""
try:
import pymssql
except :
os.system("btpip install pymssql==2.3.0")
# os.system("btpip install pymssql==2.1.4")
import pymssql
if not self.__DB_CLOUD:
sa_path = 'data/sa.pl'
if os.path.exists(sa_path): self.__DB_PASS = public.readFile(sa_path)
self.__DB_PORT = self.get_port()
try:
if self.__DB_CLOUD:
try:
self.__DB_CONN = pymssql.connect(server=self.__DB_HOST, port=str(self.__DB_PORT),
user=self.__DB_USER,
password=self.__DB_PASS, database=None, login_timeout=30,
timeout=0, autocommit=True, charset="CP936", tds_version='7.0')
except:
self.__DB_ERR = 'Failed to connect to database! Check that the remote database information is correct'
return False
# self.__DB_CONN = pymssql.connect(server=self.__DB_HOST, port=str(self.__DB_PORT),
# user=self.__DB_USER,
# password=self.__DB_PASS, database=None, login_timeout=30,
# timeout=0, autocommit=True, charset="CP936", tds_version='7.0')
else:
self.__DB_CONN = pymssql.connect(server=self.__DB_HOST, port=str(self.__DB_PORT), login_timeout=30,
timeout=0, autocommit=True, charset="CP936", tds_version='7.0')
self.__DB_CUR = self.__DB_CONN.cursor() # 将数据库连接信息赋值给cur。
self.__DB_CUR = self.__DB_CONN.cursor() # 将数据库连接信息赋值给cur。
if self.__DB_CUR:
return True
else:
self.__DB_ERR = 'Failed to connect to the database, please check whether SQL Server is installed'
return False
except Exception as ex:
self.__DB_ERR = public.get_error_info()
return False
def execute(self,sql):
#执行SQL语句返回受影响行
if not self.__Conn(): return self.__DB_ERR
try:
result = self.__DB_CUR.execute(sql)
self.__Close()
return result;
except Exception as ex:
self.__DB_ERR = public.get_error_info()
return self.__DB_ERR
def query(self,sql):
#执行SQL语句返回数据集
if not self.__Conn(): return self.__DB_ERR
try:
self.__DB_CUR.execute(sql)
result = self.__DB_CUR.fetchall()
#print(result)
#将元组转换成列表
data = list(map(list,result))
self.__Close()
return data
except Exception as ex:
self.__DB_ERR = public.get_error_info()
#public.WriteLog('SQL Server查询异常', self.__DB_ERR);
return str(ex)
#关闭连接
def __Close(self):
self.__DB_CUR.close()
self.__DB_CONN.close()