Python操作数据库非常的方便。
不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。
DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。
Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。
Python DB-API使用流程:
- 引入 API 模块。
- 获取与数据库的连接。
- 执行SQL语句和存储过程。
- 关闭数据库连接。
我使用的是Python3.X,它操作MySQL需要引入的模块是pymysql。
数据库的操作分为两种:查询和更改。代码如下:
import pymysql
# 执行查询
def select(sql):
# 数据列表
results = []
# 打开数据库连接
db = pymysql.connect("localhost","root","root","pystockdb")
# 创建一个游标
cursor = db.cursor()
# 执行
try:
# 执行SQL语句
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
# for row in results:
# ipurl = row[1]
# state = row[2]
# # 打印结果
# print("地址:{0:24}{1}".format(ipurl,state))
except:
print("执行SQL出错")
# 关闭连接
db.close()
return results
# 执行添加、删除和更新
def exec(sql):
# 打开数据库连接
db = pymysql.connect("localhost","root","root","pystockdb")
# 创建一个游标
cursor = db.cursor()
# 执行
try:
# 执行SQL语句
cursor.execute(sql)
# 提交到数据库
db.commit()
except:
db.rollback()
print("执行SQL出错")
# 关闭连接
db.close()
if __name__ == "__main__":
result = select("select * from iptbl")
for row in result:
url = row[1]
print(url)
最后:如果在使用中出错了,可以对照下表进行错误处理
错误处理
DB API中定义了一些数据库操作的错误及异常,下表列出了这些错误和异常:
异常 | 描述 |
---|---|
Warning | 当有严重警告时触发,例如插入数据是被截断等等。必须是 StandardError 的子类。 |
Error | 警告以外所有其他错误类。必须是 StandardError 的子类。 |
InterfaceError | 当有数据库接口模块本身的错误(而不是数据库的错误)发生时触发。 必须是Error的子类。 |
DatabaseError | 和数据库有关的错误发生时触发。 必须是Error的子类。 |
DataError | 当有数据处理时的错误发生时触发,例如:除零错误,数据超范围等等。 必须是DatabaseError的子类。 |
OperationalError | 指非用户控制的,而是操作数据库时发生的错误。例如:连接意外断开、 数据库名未找到、事务处理失败、内存分配错误等等操作数据库是发生的错误。 必须是DatabaseError的子类。 |
IntegrityError | 完整性相关的错误,例如外键检查失败等。必须是DatabaseError子类。 |
InternalError | 数据库的内部错误,例如游标(cursor)失效了、事务同步失败等等。 必须是DatabaseError子类。 |
ProgrammingError | 程序错误,例如数据表(table)没找到或已存在、SQL语句语法错误、 参数数量错误等等。必须是DatabaseError的子类。 |
NotSupportedError | 不支持错误,指使用了数据库不支持的函数或API等。例如在连接对象上 使用.rollback()函数,然而数据库并不支持事务或者事务已关闭。 必须是DatabaseError的子类。 |