python动态SQL
import pymssql
import datetime
import time
start = time.perf_counter()
print('程序正在运行, 请稍等...')
print("数据读取中...")
today_now = datetime.datetime.now()
print("现在时间是:", today_now)
"""
这是一个数据库连接类
"""
class MSSQL:
def __init__(self, host, user, pwd, db):
self.host = host
self.user = user
self.pwd = pwd
self.db = db
def __GetConnect(self):
"""
得到连接信息
返回: conn.cursor()
"""
if not self.db:
raise (NameError, "没有设置数据库信息")
self.conn = pymssql.connect(host=self.host, user=self.user, password=self.pwd, database=self.db, charset="utf8")
cur = self.conn.cursor()
if not cur:
raise (NameError, "连接数据库失败")
else:
return cur
def ExecQuery(self, sql):
"""
执行查询语句
返回的是一个包含tuple的list,list的元素是记录行,tuple的元素是每行记录的字段
"""
cur = self.__GetConnect()
cur.execute(sql)
resList = cur.fetchall()
self.conn.close()
return resList
def ExecNonQuery(self, sql):
"""
执行非查询语句
调用示例:
cur = self.__GetConnect()
cur.execute(sql)
self.conn.commit()
self.conn.close()
"""
cur = self.__GetConnect()
cur.execute(sql)
self.conn.commit()
self.conn.close()
def main():
ms = MSSQL(host='177.20.128.0', user="sa", pwd="sa123456", db="db_jkgd")
table_name = input("请输入查询的数据库表名:")
resList = ms.ExecQuery("SELECT COUNT(*) AS 总数 FROM " + str(table_name))
print(resList)
if __name__ == '__main__':
main()
print("文件输出成功")
today_now_end = datetime.datetime.now()
print("现在时间是:", today_now_end)
end = time.perf_counter()
print('本次耗时:%0.0f秒' % (end - start))