首页 > 数据库技术 > 详细

python连接sqlserver数据库操作

时间:2019-05-22 11:27:59      阅读:144      评论:0      收藏:0      [点我收藏+]

简述

  python连接微软的sql server数据库用的第三方模块叫做pymssql(document:http://www.pymssql.org/en/stable/index.html)。在官方文档可以看到,pymssql是基于_mssql模块做的封装,是为了遵守python的DBAPI规范接口. 两者之间的关系如下图:

技术分享图片

1.使用pymssql连接sql server数据库并实现数据库基本操作(官方api http://www.pymssql.org/en/stable/ref/pymssql.html )

import pymssql 

server = "187.32.43.13"    # 连接服务器地址
user = "root"         # 连接帐号
password = "1234"      # 连接密码

conn = pymssql.connect(server, user, password, "连接默认数据库名称")  #获取连接

cursor = conn.cursor() # 获取光标

# 创建表
cursor.execute("""
IF OBJECT_ID(‘persons‘, ‘U‘) IS NOT NULL
    DROP TABLE persons
CREATE TABLE persons (
    id INT NOT NULL,
    name VARCHAR(100),
    salesrep VARCHAR(100),
    PRIMARY KEY(id)
)
""")  

# 插入多行数据
cursor.executemany(
    "INSERT INTO persons VALUES (%d, %s, %s)",
    [(1, John Smith, John Doe),
     (2, Jane Doe, Joe Dog),
     (3, Mike T., Sarah H.)])
# 你必须调用 commit() 来保持你数据的提交如果你没有将自动提交设置为true
conn.commit()

# 查询数据
cursor.execute(SELECT * FROM persons WHERE salesrep=%s, John Doe)

# 遍历数据(存放到元组中) 方式1
row = cursor.fetchone()
while row:
    print("ID=%d, Name=%s" % (row[0], row[1]))
    row = cursor.fetchone()

# 遍历数据(存放到元组中) 方式2
for row in cursor:
    print(row = %r % (row,))


# 遍历数据(存放到字典中)
# cursor = conn.cursor(as_dict=True)
#
# cursor.execute(‘SELECT * FROM persons WHERE salesrep=%s‘, ‘John Doe‘)
# for row in cursor:
#     print("ID=%d, Name=%s" % (row[‘id‘], row[‘name‘]))
#
# conn.close()
# 关闭连接
conn.close()

# 注:在任何时候,在一个连接下,一次正在执行的数据库操作只会出现一个cursor对象

2)同时,如果你可以使用另一种语法:with 来避免手动关闭cursors和connection连接

import pymssql 

server = "187.32.43.13"    # 连接服务器地址
user = "root"         # 连接帐号
password = "1234"      # 连接密码

with pymssql.connect(server, user, password, "你的连接默认数据库名称") as conn:
    with conn.cursor(as_dict=True) as cursor:   # 数据存放到字典中
        cursor.execute(SELECT * FROM persons WHERE salesrep=%s, John Doe)
        for row in cursor:
            print("ID=%d, Name=%s" % (row[id], row[name]))

3)调用存储过程:

with pymssql.connect(server, user, password, "tempdb") as conn:
    with conn.cursor(as_dict=True) as cursor:
        cursor.execute("""
        CREATE PROCEDURE FindPerson
            @name VARCHAR(100)
        AS BEGIN
            SELECT * FROM persons WHERE name = @name
        END
        """)
        cursor.callproc(FindPerson, (Jane Doe,))
        for row in cursor:
            print("ID=%d, Name=%s" % (row[id], row[name]))

2.使用_mssql连接sql server数据库并实现操作(官方api  http://www.pymssql.org/en/stable/ref/_mssql.html)

import _mssql
# 创建连接
conn = _mssql.connect(server=SQL01, user=user, password=password,     database=mydatabase)
print(conn.timeout)
print(conn.login_timeout)

# 创建table
conn.execute_non_query(CREATE TABLE persons(id INT, name VARCHAR(100)))
# insert数据
conn.execute_non_query("INSERT INTO persons VALUES(1, ‘John Doe‘)")
conn.execute_non_query("INSERT INTO persons VALUES(2, ‘Jane Doe‘)")
# 查询操作
conn.execute_query(SELECT * FROM persons WHERE salesrep=%s, John Doe)
for row in conn:
    print "ID=%d, Name=%s" % (row[id], row[name])
#查询数量count()
numemployees = conn.execute_scalar("SELECT COUNT(*) FROM employees")
# 查询一条数据
employeedata = conn.execute_row("SELECT * FROM employees WHERE id=%d", 13)
# 带参数查询的几个例子:
conn.execute_query(SELECT * FROM empl WHERE id=%d, 13)
conn.execute_query(SELECT * FROM empl WHERE name=%s, John Doe)
conn.execute_query(SELECT * FROM empl WHERE id IN (%s), ((5, 6),))
conn.execute_query(SELECT * FROM empl WHERE name LIKE %s, J%)
conn.execute_query(SELECT * FROM empl WHERE name=%(name)s AND city=%(city)s,     { name: John Doe, city: Nowhere } )
conn.execute_query(SELECT * FROM cust WHERE salesrep=%s AND id IN (%s),     (John Doe, (1, 2, 3)))
conn.execute_query(SELECT * FROM empl WHERE id IN (%s), (tuple(xrange(4)),))
conn.execute_query(SELECT * FROM empl WHERE id IN (%s),     (tuple([3, 5, 7, 11]),))
#关闭连接
conn.close()

转自:https://www.cnblogs.com/malcolmfeng/p/6909293.html

python连接sqlserver数据库操作

原文:https://www.cnblogs.com/Frank-Suming/p/10904514.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!