python网页数据抓取(Pythonsqlite3模块支持两种类型的SQL语句(图) )

优采云 发布时间: 2021-10-02 00:12

  python网页数据抓取(Pythonsqlite3模块支持两种类型的SQL语句(图)

)

  SQLite-Python 安装

  SQLite3 可以使用 sqlite3 模块与 Python 集成。sqlite3 模块由 Gerhard Haring 编写。它提供了与 PEP 249 描述的 DB-API 2.0 规范兼容的 SQL 接口。您不需要单独安装该模块,因为 Python 2.5.x 及以上版本默认自带这个模块。

  为了使用 sqlite3 模块,您必须首先创建一个代表数据库的连接对象,然后您可以选择创建一个游标对象,它将帮助您执行所有 SQL 语句。

  Python sqlite3 模块 API

  以下是重要的sqlite3模块程序,可以满足你在Python程序中使用SQLite数据库的需求。如果您需要更多详细信息,请查看 Python sqlite3 模块的官方文档。

  序列号 API 和描述

  1

  sqlite3.connect(database [,timeout,other optional arguments])

  此 API 打开一个指向 SQLite 数据库文件数据库的链接。您可以使用 ":memory:" 在 RAM 中打开到数据库的数据库连接,而不是在磁盘上打开它。如果成功打开数据库,则返回一个连接对象。

  当一个数据库被多个连接访问,并且其中一个修改了数据库时,SQLite 数据库会被锁定,直到事务提交。timeout 参数表示连接等待锁定直到发生异常断开的持续时间。默认超时参数为 5.0(5 秒)。

  如果给定的数据库名称 filename 不存在,则调用将创建一个数据库。如果不想在当前目录下创建数据库,可以指定文件名和路径,这样就可以在任何地方创建数据库。

  2

  connection.cursor([cursorClass])

  此例程创建一个游标,它将用于 Python 数据库编程。此方法接受单个可选参数 cursorClass。如果提供了这个参数,它必须是一个从sqlite3.Cursor 扩展而来的自定义游标类。

  3

  cursor.execute(sql [, 可选参数])

  该例程执行 SQL 语句。SQL 语句可以参数化(即使用占位符代替 SQL 文本)。sqlite3 模块支持两种类型的占位符:问号和命名占位符(命名样式)。

  例如: cursor.execute("insert into people values(?, ?)", (who, age))

  4

  connection.execute(sql [, 可选参数])

  该例程是上面执行的光标对象提供的方法的快捷方式。它通过调用游标方法创建一个中间游标对象,然后使用给定的参数调用游标的execute方法。

  5

  cursor.executemany(sql,seq_of_parameters)

  此例程对 seq_of_parameters 中的所有参数或映射执行 SQL 命令。

  6

  connection.executemany(sql[, 参数])

  该例程是通过调用游标方法创建的中间游标对象的快捷方式,然后使用给定的参数调用游标的executemany方法。

  7

  cursor.executescript(sql_script)

  一旦例程接收到脚本,它就会执行多条 SQL 语句。它首先执行 COMMIT 语句,然后执行作为参数传入的 SQL 脚本。所有的 SQL 语句都应该用分号分隔;。

  8

  connection.executescript(sql_script)

  该例程是通过调用游标方法创建的中间游标对象的快捷方式,然后使用给定的参数调用游标的executescript方法。

  9

  connection.total_changes()

  此例程返回自数据库连接打开以来已修改、插入或删除的数据库行总数。

  10

  mit()

  此方法提交当前事务。如果不调用此方法,则自上次调用 commit() 以来所做的任何操作对其他数据库连接都将不可见。

  11

  connection.rollback()

  此方法回滚自上次调用 commit() 以来对数据库所做的更改。

  12

  连接.close()

  此方法关闭数据库连接。请注意,这不会自动调用 commit()。如果之前没有调用过 commit() 方法,只要关闭数据库连接,你的所有更改都会丢失!

  13

  cursor.fetchone()

  此方法获取查询结果集中的下一行并返回单个序列。当没有更多可用数据时,它返回 None。

  14

  cursor.fetchmany([size=cursor.arraysize])

  此方法获取查询结果集中的下一行组并返回一个列表。当没有更多可用行时,将返回一个空列表。此方法尝试获取由 size 参数指定的尽可能多的行。

  15

  cursor.fetchall()

  此例程获取查询结果集中的所有(剩余)行并返回一个列表。当没有可用行时,返回一个空列表。

  连接到数据库

  以下 Python 代码显示了如何连接到现有数据库。如果数据库不存在,则创建它,最后返回一个数据库对象。

  

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')

print "Opened database successfully"

  在这里,您还可以将数据库名称复制到特定名称:memory:,这将在 RAM 中创建一个数据库。现在,让我们运行上面的程序在当前目录中创建我们的数据库 test.db。您可以根据需要更改路径。将上面的代码保存到sqlite.py文件中,执行如下图。如果数据库创建成功,将显示如下信息:

  

$chmod +x sqlite.py

$./sqlite.py

Open database successfully

  创建表

  以下 Python 代码片段将用于在先前创建的数据库中创建表:

  

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')

print "Opened database successfully"

c = conn.cursor()

c.execute('''CREATE TABLE COMPANY

(ID INT PRIMARY KEY NOT NULL,

NAME TEXT NOT NULL,

AGE INT NOT NULL,

ADDRESS CHAR(50),

SALARY REAL);''')

print "Table created successfully"

conn.commit()

conn.close()

  执行上述程序时,会在 test.db 中创建 COMPANY 表并显示以下消息:

  

Opened database successfully

Table created successfully

  插入操作

  以下 Python 程序显示了如何在上面创建的 COMPANY 表中创建记录:

  

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')

c = conn.cursor()

print "Opened database successfully"

c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \

VALUES (1, 'Paul', 32, 'California', 20000.00 )")

c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \

VALUES (2, 'Allen', 25, 'Texas', 15000.00 )")

c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \

VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )")

c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \

VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )")

conn.commit()

print "Records created successfully"

conn.close()

  当上面的程序执行时,它会在 COMPANY 表中创建一个给定的记录,并会显示以下两行:

  

Opened database successfully

Records created successfully

  选择操作

  以下 Python 程序显示了如何从之前创建的 COMPANY 表中检索和显示记录:

  

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')

c = conn.cursor()

print "Opened database successfully"

cursor = c.execute("SELECT id, name, address, salary from COMPANY")

for row in cursor:

print "ID = ", row[0]

print "NAME = ", row[1]

print "ADDRESS = ", row[2]

print "SALARY = ", row[3], "\n"

print "Operation done successfully"

conn.close()

  执行上述程序时,会产生以下结果:

  

Opened database successfully

ID = 1

NAME = Paul

ADDRESS = California

SALARY = 20000.0

ID = 2

NAME = Allen

ADDRESS = Texas

SALARY = 15000.0

ID = 3

NAME = Teddy

ADDRESS = Norway

SALARY = 20000.0

ID = 4

NAME = Mark

ADDRESS = Rich-Mond

SALARY = 65000.0

Operation done successfully

  更新操作

  以下 Python 代码展示了如何使用 UPDATE 语句更新任何记录,然后从 COMPANY 表中检索并显示更新的记录:

  

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')

c = conn.cursor()

print "Opened database successfully"

c.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1")

conn.commit()

print "Total number of rows updated :", conn.total_changes

cursor = conn.execute("SELECT id, name, address, salary from COMPANY")

for row in cursor:

print "ID = ", row[0]

print "NAME = ", row[1]

print "ADDRESS = ", row[2]

print "SALARY = ", row[3], "\n"

print "Operation done successfully"

conn.close()

  执行上述程序时,会产生以下结果:

  

Opened database successfully

Total number of rows updated : 1

ID = 1

NAME = Paul

ADDRESS = California

SALARY = 25000.0

ID = 2

NAME = Allen

ADDRESS = Texas

SALARY = 15000.0

ID = 3

NAME = Teddy

ADDRESS = Norway

SALARY = 20000.0

ID = 4

NAME = Mark

ADDRESS = Rich-Mond

SALARY = 65000.0

Operation done successfully

  删除操作

  以下 Python 代码展示了如何使用 DELETE 语句删除任何记录,然后从 COMPANY 表中获取并显示剩余记录:

  

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')

c = conn.cursor()

print "Opened database successfully"

c.execute("DELETE from COMPANY where ID=2;")

conn.commit()

print "Total number of rows deleted :", conn.total_changes

cursor = conn.execute("SELECT id, name, address, salary from COMPANY")

for row in cursor:

print "ID = ", row[0]

print "NAME = ", row[1]

print "ADDRESS = ", row[2]

print "SALARY = ", row[3], "\n"

print "Operation done successfully"

conn.close()

  执行上述程序时,会产生以下结果:

  

Opened database successfully

Total number of rows deleted : 1

ID = 1

NAME = Paul

ADDRESS = California

SALARY = 20000.0

ID = 3

NAME = Teddy

ADDRESS = Norway

SALARY = 20000.0

ID = 4

NAME = Mark

ADDRESS = Rich-Mond

SALARY = 65000.0

Operation done successfully

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线