×

SQL SERVER Python

Python访问SQL Server数据库

Kalet Kalet 发表于2019-05-10 16:48:06 浏览658 评论0

抢沙发发表评论

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


转自:https://blog.csdn.net/qq_32782059/article/details/73115736 

群贤毕至

访客