Python操作SQLServer

安装开发环境

要进行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文件中的内容为上面我们列出的代码。

没有更多推荐了,返回首页