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

来源:互联网 发布:移动办公软件排名 编辑:程序博客网 时间:2024/06/11 23:04

之前写了一个小程序,使用的数据是从数据库中下载出来的,但是现在想要让它直接链接上数据库中,可以直接从数据库中读取数据,所以研究了一下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,连接上数据库,右键属性
    图1 数据库属性
    红圈中的值才是服务器的值,也就是SERVER的值
    第三个参数数据库的名称DATABASE自不必多说,下图中红圈的值就是数据库的名称
    图2 数据库名称
    在确定第四个参数和第五个参数的值之前,先看下数据库是否可以启用服务器代理账户,还是第一个参数一样的窗口右键->参数->安全性,要确保启用服务器代理账户项是可以启动的,如下图
    图3 启用服务器代理账户
    然后找到对象资源管理器中的数据库服务器(第一个参数也在这)一项中的安全性->登录名
    图4 登录名
    右键sa->属性->安全性,输入密码,确定。这个用户sa和密码就是第四和第五个参数。
    图5 密码
    这些就是第二条语句中的参数。
    第三条语句是建立cursor,没什么可说的。
    第四条语句就是对数据库中数据进行操作了,其中的sql语言要写在execute()函数中,并用双引号括起来
    但是这条语句输出的却是

>>> cursor.execute("select name from Database.data")<pyodbc.Cursor 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()
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 翻毛皮被染色了怎么办 防鹿皮绒鞋染色怎么办 亚瑟士跑鞋挤脚怎么办 亚瑟士跑鞋很紧怎么办 飞线鞋面破了怎么办 新袜子穿了很滑怎么办 鞋底硬脚底板疼怎么办 新鞋前面太硬怎么办 新鞋子鞋底太硬怎么办 不到一米八的身高想扣篮怎么办 鞋胶粘在鞋面上怎么办 鞋子上沾了胶怎么办 休闲鞋号码大了半码怎么办 高跟鞋大了一码怎么办 浅口单鞋买大了怎么办 新鞋子磨大脚趾怎么办 鞋前面磨大脚趾怎么办 白鞋子蹭黑了怎么办 夏天穿皮鞋捂脚怎么办 耐克赤足掉漆怎么办 鞋子买回来小了怎么办 布鞋大了一码怎么办 鞋子买小了一码怎么办 运动鞋小了一码怎么办 帆布鞋小了一码怎么办 脚踝骨韧带断了怎么办 咖啡喝多了失眠怎么办 奥迪q7电瓶没电怎么办 一岁宝宝坐不稳怎么办 2岁宝宝不肯把尿怎么办 踢足球上肢和下肢不协调怎么办 ppt文字放映时重叠怎么办 月子8天腰背疼怎么办 生完五天腰背疼怎么办 生完孩子腰不好怎么办 养了个白眼狼怎么办 孩子学东西很慢怎么办 手不小心碰肿了怎么办 腿中间摩擦的疼怎么办 晚上睡觉时双腿酸胀怎么办 腿擦破皮了怎么办 快速好