要进行SQLServer的开发,首先需要在本机上安装SQLServer,建立本机开发环境。可以从微软官网上下载类似cn_sql_server_2012_enterprise_edition_with_sp1_x86_x64_dvd_1234493.iso文件,可以直接双击安装,安装过程极为复杂,对于习惯mysql的用户来说可以说是难以想象。历尽千辛苦安装之后,就可以启动SQL Server Management Studio来进行数据库管理了。
用python操作SQLServer数据库,需要安装pymssql库。直接使用pip install pymssql会提示需要visual studio 2014 build tools,而且只能是这个版本,高版本的都不行。所以最简单的方法是下载whl文件,直接安装。
到python库网站:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql,找到自己平台对应的文件,下载到本地任意一个目录,以我的为例为pymssql‑2.1.4.dev5‑cp36‑cp36m‑win_amd64.whl,在该目录下运行如下命令:
pip install pymssql‑2.1.4.dev5‑cp36‑cp36m‑win_amd64.whl
安装成功后,可以直接删除pymssql‑2.1.4.dev5‑cp36‑cp36m‑win_amd64.whl文件,因为python已经将其拷贝到系统库文件目录下了。
首先将线上数据库备份为bak文件,下载到本机上来。
在SQL Server Management Studio中,在左侧菜单栏中选择“数据库”,点击右键选反择“还原数据库”,进行如下图所示操作:
选择确定就可以在本地建立一个完整的数据库了。
在SQLServer Management Studio中,建立一个新数据库连接,输入新建数据库用户名和密码,如果可以成功连接,则开发环境就准备成功了。
对于数据库操作,首先需要建立数据库连接,然后是执行增删改查操作,我们这里仅以建立数据库连接和发送一条简单的查询请求为例。首先是建立数据库连接,代码如下所示:
import pymssql
def get_connection():
conn = pymssql.connect(server='SKY-20180726HXA',
user='dbo_lejiao', password='123456', database='app_hw_read')
return conn
def close_connection(conn):
conn.close()
数据库连接建立好之后,就可以进行增删改查操作了,这里以查询为例,并在SQL语句中有两个参数,采用SQL预编译方式,这样就不用考虑SQL注入攻击的问题了,代码如下所示:
def execute_query(sql, params):
conn = get_connection()
cursor = conn.cursor()
cursor.execute(sql, params)
rows = cursor.fetchall()
return rows
如上所示,SQLServer采用游标来执行SQL语句,在执行SQL语句时,可以指定参数的值params,params的类型为元组,如果是一次性执行多条语句,例如一次性插入100条记录,可以将100条记录的参数作为元组数组形式传入,如下所示:
cursor.executemany(
"INSERT INTO persons VALUES (%d, %s, %s)",
[(1, 'John Smith', 'John Doe'),
(2, 'Jane Doe', 'Joe Dog'),
(3, 'Mike T.', 'Sarah H.')])
调用代码如下所示:
import model.m_mssql as db
if __name__ == '__main__':
args = {}
print('Microsoft SQLServer')
conn = db.get_connection()
print(conn)
sql = 'select resid, resindex, remark from dbo.Res_warn where resindex=%d or resindex=%d'
index1 = 0
index2 = 3
params = (index1, index2)
rows = db.execute_query(sql, params)
for row in rows:
print('#### {0}--{1}--{2}'.format(row[0], row[1], row[2]))
db.close_connection(conn)
print('mssql is ok')
其中model/m_mssql.py文件中的内容为上面我们列出的代码。