python3.5链接SQL2017,读取数据库中的数据

之前写了一个小程序,使用的数据是从数据库中下载出来的,但是现在想要让它直接链接上数据库中,可以直接从数据库中读取数据,所以研究了一下python和sql之间的链接。具体如下:
使用的库为pyodbc
安装过程自不必多说,和其他库的安装一样
安装完成后测试过程,在网上找到了好多资料

>>> import pyodbc

>>>cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=192.168.1.100\\sql;DATABASE=testDB;UID=sa;PWD=myPassword')

>>>cursor = cnxn.cursor()

>>>cursor.execute("select * from Tb")

下面一个一个说一下什么意思及自己要使用时应注意什么
第一句import pyodbc导入pyodbc库
第二句
cnxn=pyodbc.connect('DRIVER={SQL Server};SERVER=192.168.1.100\\sql;DATABASE=testDB;UID=sa;PWD=myPassword')
我在这句吃了很多亏,导致了许多莫名其妙的错误,下面我们就详细剖析下这条语句,首先pyodbc.connect()是链接函数,它传入一个string类型参数,这个参数会指定链接数据库的类型DRIVER,数据库的名称DATABASE,数据库所属服务器SERVER,用户名UID,密码PWD,这些东西对于那些对数据库了解的比较好的童鞋来说应该不成问题,但对我这个半吊子来说这个就是一个大问题,下面就一个个地去找一下这些东西在哪,首先我先说下我的数据库是SQL2017,我使用的sql manage是Microsoft SQL Server Management Studio 17,在安装它时会自动安装一个Native Client,大家可以去控制面板->程序->程序与功能 中搜索Native Client,确认下自己的版本,然后对应下表,将对应的值输入链接数据库的类型DRIVER后边花括号里;

  • {SQL Server} ————————- released with SQL Server 2000
  • {SQL Native Client} —————– released with SQL Server 2005 (also known as
    version 9.0)
  • {SQL Server Native Client 10.0} - released with SQL Server 2008
  • {SQL Server Native Client 11.0} - released with SQL Server 2012

    第二个参数数据库所属服务器SERVER的值我查阅的资料大多都是localhost,但是对于我的数据库却老是链接不上,所以我只好打开Microsoft SQL Server Management Studio 17,连接上数据库,右键属性
    python3.5链接SQL2017,读取数据库中的数据_第1张图片
    红圈中的值才是服务器的值,也就是SERVER的值
    第三个参数数据库的名称DATABASE自不必多说,下图中红圈的值就是数据库的名称
    python3.5链接SQL2017,读取数据库中的数据_第2张图片
    在确定第四个参数和第五个参数的值之前,先看下数据库是否可以启用服务器代理账户,还是第一个参数一样的窗口右键->参数->安全性,要确保启用服务器代理账户项是可以启动的,如下图
    python3.5链接SQL2017,读取数据库中的数据_第3张图片
    然后找到对象资源管理器中的数据库服务器(第一个参数也在这)一项中的安全性->登录名
    python3.5链接SQL2017,读取数据库中的数据_第4张图片
    右键sa->属性->安全性,输入密码,确定。这个用户sa和密码就是第四和第五个参数。
    python3.5链接SQL2017,读取数据库中的数据_第5张图片
    这些就是第二条语句中的参数。
    第三条语句是建立cursor,没什么可说的。
    第四条语句就是对数据库中数据进行操作了,其中的sql语言要写在execute()函数中,并用双引号括起来
    但是这条语句输出的却是

>>> cursor.execute("select name from Database.data")
object at 0x000001C421FAFAF8>

要想将它显示为正常的形式还需要调用其它函数fetchone()或者fetchall()。

>>> cursor.fetchall()
[('1haha', ), ('2dada', ), ('3chuachua', ), ('4xixi', ), ('5hehe', ), ('6qieqie', ), ('7lele', ), ('8lala', )]

成功!
如果是对数据库中数据进行增删修改等其它操作时,还要记得用函数commit()对操作提交一下。

>>> cursor.execute("delect  from Database.data where name = '4xixi' ")
>>> cnxn.commit()

你可能感兴趣的:(python学习)