python3 连接sql server数据库和简单sql执行

Python3连接数据库,首先下载连接sql server数据库的pymssql库。

Python连接数据库很简单,也有很多库可以用,我用的比较常用的pymssql。

连接数据库:connect = pymssql.connect(self.url,self.username,self.password,self.databaseName) ;

获取游标:cursor = connect.cursor()   #游标用于执行sql操作

查询操作:cursor.execute(“select * from t_table”)         
                  rows = cursor.fetchall()        #获查询到的数据,rows是一个元组类型。

增删改操作:cursor.execute(sql)
                     connect.commit()       #注意要提交
          

下面贴代码,我创建一个数据库操作的对象,便于操作数据库,简单的操作有查询数据库所有表名,传入表名获得该表所有字段名,执行sql,代码如下,

import pymssql
import time
import traceback, sys


def log(str):
	str = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) + ':' +str
	with open('file1.txt', 'a+') as f:
		f.write(str)
		f.write('\n')


class database(object):
	"""数据库操作对象"""
	def __init__(self, url,username,password,databaseName):
		
		self.url = url
		self.username = username
		self.password = password
		self.databaseName = databaseName
		self.connect = self.sql_server_conn()
		self.cursor = self.connect.cursor()
		
	def sql_server_conn(self):
		connect = pymssql.connect(self.url,self.username,self.password,self.databaseName) #服务器名,账户,密码,数据库名
		if connect:
			print("连接成功!")
		return connect

	#查看表的所有字段,
	#@table_name :表名
	def get_column_name(self,table_name):
		self.cursor.execute("select top 1 * from " + table_name)   #执行sql语句
		data_dict=[]
		for field in self.cursor.description:
			data_dict.append(field[0])
		print('%s表中有%d个字段'%(table_name,len(data_dict)))
		print(data_dict)
		return data_dict

	#得到数据库所有的表名
	def get_table_name(self):
		sql = "SELECT NAME FROM SYSOBJECTS WHERE XTYPE='U' ORDER BY NAME"
		self.cursor.execute(sql)  # 返回执行成功的结果条数
		rows = self.cursor.fetchall()
		print('共有%d个表'%(len(rows)))
		for d in rows:
			for k in d:
				print(k)

	#执行sql语句,增删改查
	#@sql:sql语句
	def execute_sql(self,sql):
		sql = sql.lower()
		if 'insert' in sql or 'delete' in sql or  'update' in sql:
			try:
				self.cursor.execute(sql)
				self.connect.commit()
				str =  '插入或更新或删除sql:'+sql
				log(str)
				return ;
			except Exception as err:
				str = traceback.format_exc()
				log(str)
		elif 'select' in sql :
			self.cursor.execute(sql)
			rows = self.cursor.fetchall()
			print('共有%d条记录'%(len(rows)))
			for k  in rows:
				print(k) 
			return rows

	#关闭游标,连接
	def close(self):
		self.cursor.close()   #关闭游标
		self.connect.close()


if __name__ == '__main__':
	test = database('url地址', '用户名', '密码', '数据库名')
	test.get_column_name("表名")
	test.get_table_name()
	sql = "select * from t_table"
	test.execute_sql(sql)
	test.close()
	

猜你喜欢

转载自blog.csdn.net/Xu_programmer/article/details/103993847