好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Python操作SQL Server(二)创建数据表并向数据表中添加数据

目录

创建数据表 向数据表中添加数据 实例

创建数据表

首先创建连接对象

import?pymssql??#调入模块connect?=?pymssql.connect(host='localhost',server='服务器名称',port='端口号',user='用户名',password='用户密码',database='数据库名称')?#服务器名,账户,密码,数据库名

创建游标对象 (数据表的创建,查询等命令都要用游标对象执行)

db?=?connect.cursor()??#创建游标对象

执行数据库的命令格式: 游标对象.execute(“数据库命令”)

创建数据表,创建的数据表将会添加到你所连接的数据库里面。

格式:

#首先判断是否有数据表,有的话就执行删除命令,然后创建数据表db.execute("""
IF?OBJECT_ID('数据表名称','U')?IS?NOT?NULL
????DROP?TABLE?数据表名称
CREATE?TABLE?数据表名称(
????列名?数据类型?是否能为空
)
""")

例: 判断有无数据表number,有的话删除然后新建,在数据表中添加列名为 ID 数据类型为 整形 不能为空。添加列名为 Url 数据类型为 长字符串型 不能为空

db.execute("""
IF?OBJECT_ID('number','U')?IS?NOT?NULL
????DROP?TABLE?number
CREATE?TABLE?number(
????ID	INT	NOT?NULL,
????Url	VARCHAR(30)	NOT?NULL
)
""")

向数据表中添加数据

格式:

db.execute("INSERT?INTO?数据表名称?VALUES?('添加的数据','添加的数据')")

这里要注意的是你所要添加数据的项数要和数据表的列数是相等的,即你所添加的数据和数据表的列名是一一对应的,有三列就一次添加三项数据。

还有就是你所添加的数据类型要和每列要求的数据类型是相同的。

例:

db.execute("INSERT?INTO?number?VALUES?('第一列','第二列','第三列')"

执行后结果如图:

当我们直接执行这些命令时,他是不会产生变化的,因为我们的命令还没有被提交,接下来我们就要添加语句:

connect测试数据mit()?#提交数据

现在再去看我们的数据表就可以发现,我们所要添加的数据就成功被添加到了数据表中。

当执行完所有数据库命令后,要记得断开Python和数据库的连接,执行语句:

connect.close()??#关闭连接

实例

下面就附一个爬取网页信息并存取到数据表中的实例。

import?requestsfrom?lxml?import?etreeimport?pymssql?#引入pymssql模块#创建连接对象connect?=?pymssql.connect(host='localhost',server='服务器名称',port='端口号',user='用户名',password='用户密码',database='数据库名称')?#服务器名,账户,密码,数据库名#?print(connect)??可以输出查看一下连接对象if?connect:print("连接成功!")url?=?"http://HdhCmsTesttiantianxieye测试数据/"html?=?requests.get(url).text
etree?=?etree.HTML(html)number?=?etree.xpath('//div[@class="ListLink2"]/ul/li/a/text()')??#获取数据表中三个列名对应的三项数据number_url?=?etree.xpath('//div[@class="ListLink2"]/ul/li/a/@href')target?=?etree.xpath('//div[@class="ListLink2"]/ul/li/a/@target')#?print(number_url)db?=?connect.cursor()??#创建游标对象#用游标对象执行SQL命令,创建数据表,添加列。db.execute("""
IF?OBJECT_ID('number','U')?IS?NOT?NULL
????DROP?TABLE?number
CREATE?TABLE?number(
????Name?VARCHAR(20)?NOT?NULL,
????Url?VARCHAR(30)?NOT?NULL,
????Bank?VARCHAR(10)?NOT?NULL
)
""")#循环爬取的数据,依次写入数据表中。for?i?in?range(len(number)):num?=?str(number[i])href?=?str(number_url[i])bank?=?str(target[i])db.execute("INSERT?INTO?number?VALUES?('%s','%s','%s')"?%?(num,href,bank))??#执行SQL命令?数据表名称不区分大小写?所以这里的number?=?Number添加的数据要放在括号内?添加的项数要和数据表中的列数相等?并且要对应相对列的类型connect测试数据mit()?#提交数据connect.close()??#关闭连接

执行结果如图:

查看更多关于Python操作SQL Server(二)创建数据表并向数据表中添加数据的详细内容...

  阅读:63次