Python访问SQL Server数据库

 

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()

你可能感兴趣的:(Python,SQL,LINUX,(ubuntu))