2017年06月12日 15:48:32 简单编程 阅读数:7503
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32782059/article/details/73115736
1、 有两个Python的SQLServer驱动,一个是pyodbc、另外一个是pymssql,选择期中的一个即可以,然后配置你的开发环境。
pip install pymssql即可安装pymssql库。
备注:安装的过程中可能会出现找不到sqlfront.h文件的错误。
解决办法:从https://github.com/ramiro/freetds/releases下载v0.95.95,解压后将include目录的文件拷贝到python的linclude目录下,将lib-nossl目录下的文件拷贝到python的libs目录下,即可以编译通过。(在Windows平台下通过)
如果是Linux平台,直接安装freetds即可以,如:yuminstall freetds。
2、 使用pymssql
import pymssql
# 创建数据库连接
def createConnection():
conn = pymssql.connect(server='ip地址', user='sa', password='password', database='sales')
return conn
#关闭数据库连接。
def closeConnection(conn):
conn.close()
#插入一行数据
def insertRow(conn):
print("开始插入数据")
cursor = conn.cursor()
#cursor.execute("insert into Product([Name], ProductNumber) values('SQL Server Express', 'SQLEXPRESS');")
cursor.execute("insert into Product([Name], ProductNumber) OUTPUT INSERTED.ProductId values('SQL Server Express', 'SQLEXPRESS');")
#如果在这里调用commit,fetchone返回的数据就是空。
row = cursor.fetchone()
while row:
print("Insert Product ID :" + str(row[0]))
row = cursor.fetchone()
#需要调用commit提交数据,默认不会自动提交。
conn.commit()
print("插入数据结束")
# 查询数据
def queryRows(conn):
print("开始查询数据")
cursor = conn.cursor()
cursor.execute("select * from Product;")
row = cursor.fetchone()
while row:
print("Product ID = " + str(row[0]))
row = cursor.fetchone()
print("查询数据结束。")
def queryMaxID(conn):
cursor = conn.cursor()
cursor.execute("select MaxId=max(ProductId) from Product;")
row = cursor.fetchone()
print("最大的产品ID = " + str(row[0]))
#事务处理
def rollbackTransaction(conn):
print("开始事务")
cursor = conn.cursor()
cursor.execute("begin transaction")
cursor.execute("insert into Product([Name], ProductNumber) OUTPUT INSERTED.ProductId values('roll back transaction', 'bollback');")
conn.rollback()
print("回滚事务")
def main():
conn = createConnection()
insertRow(conn)
print("")
queryRows(conn)
print("")
print("事务测试之前")
queryMaxID(conn)
rollbackTransaction(conn)
print("事务测试之后")
queryMaxID(conn)
closeConnection(conn)
print("运行完毕。")
if __name__ == '__main__':
main()