python笔记二(mysql数据库操作)
时间:2021-07-01 10:21:17
帮助过:31人阅读
#!/usr/bin/env python
2 # _*_ coding:utf-8 _*_
3 import pymysql
4 import MySQLdb
5
6 # 打开数据库连接
7 db = pymysql.connect(
"10.35.22.91",
"root",
"adminadmin",
"TESTDB")
8 ‘‘‘
9 db = MySQLdb.connect(host=‘10.35.22.91‘,
10 user=‘root‘,
11 port = 3306,
12 passwd =‘adminadmin‘,
13 db=‘scrapydb‘,
14 charset=‘utf8‘)
15 ‘‘‘
16 # 使用 cursor() 方法创建一个游标对象 cursor
17 cursor =
db.cursor()
18
19 # 使用 execute() 方法执行 SQL,如果表存在则删除
20 cursor.execute(
"DROP TABLE IF EXISTS EMPLOYEE")
21 # 使用预处理语句创建表
22 sql =
"""CREATE TABLE EMPLOYEE (
23 FIRST_NAME CHAR(20) NOT NULL,
24 LAST_NAME CHAR(20),
25 AGE INT,
26 SEX CHAR(1),
27 INCOME FLOAT )"""
28 cursor.execute(sql)
29
30 # SQL 插入语句
31 sql =
"""INSERT INTO EMPLOYEE(FIRST_NAME,
32 LAST_NAME, AGE, SEX, INCOME)
33 VALUES (‘Mac‘, ‘Mohan‘, 20, ‘M‘, 2000)"""
34 ‘‘‘
35 # SQL 插入语句第二种方式
36 sql = "INSERT INTO EMPLOYEE(FIRST_NAME, 37 LAST_NAME, AGE, SEX, INCOME) 38 VALUES (‘%s‘, ‘%s‘, ‘%d‘, ‘%c‘, ‘%d‘ )" % 39 (‘Mac‘, ‘Mohan‘, 20, ‘M‘, 2000)
40 ‘‘‘
41 try:
42 # 执行sql语句
43 cursor.execute(sql)
44 # 提交到数据库执行
45 db.commit()
46 except:
47 # 如果发生错误则回滚
48 db.rollback()
49
50 ‘‘‘
51 数据库查询操作
52 Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
53 fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
54 fetchall(): 接收全部的返回结果行.
55 rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数
56 ‘‘‘
57 # SQL 查询语句
58 sql =
"SELECT * FROM EMPLOYEE 59 WHERE INCOME > ‘%d‘" % (1000
)
60 try:
61 # 执行SQL语句
62 cursor.execute(sql)
63 #print(cursor.rowcount)
64 # 获取所有记录列表
65 results =
cursor.fetchall()
66 for row
in results:
67 fname =
row[0]
68 lname = row[1
]
69 age = row[2
]
70 sex = row[3
]
71 income = row[4
]
72 # 打印结果
73 print (
"fname=%s,lname=%s,age=%d,sex=%s,income=%d" %
74 (fname, lname, age, sex, income ))
75 except:
76 print (
"Error: unable to fetch data")
77
78 # 数据库更新操作
79 # SQL 更新语句
80 sql =
"UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = ‘%c‘" % (
‘M‘)
81 try:
82 # 执行SQL语句
83 cursor.execute(sql)
84 # 提交到数据库执行
85 db.commit()
86 except:
87 # 发生错误时回滚
88 db.rollback()
89
90 # 数据库删除操作
91 # SQL 删除语句
92 sql =
"DELETE FROM EMPLOYEE WHERE AGE > ‘%d‘" % (20
)
93 try:
94 # 执行SQL语句
95 cursor.execute(sql)
96 # 提交修改
97 db.commit()
98 except:
99 # 发生错误时回滚
100 db.rollback()
101
102 # 关闭数据库连接
103 db.close()
104 ‘‘‘
105 # 使用 execute() 方法执行 SQL 查询
106 #cursor.execute("SELECT VERSION()")
107
108 # 使用 fetchone() 方法获取单条数据data生成器.
109 data = cursor.fetchone()
110
111 print("Database version : %s " % data)
112
113 # 关闭数据库连接
114 db.close()
115 ‘‘‘
错误处理
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的子类。 |
python笔记二(mysql数据库操作)
标签:数据库查询 关闭 connect gpo 回滚 print usr 用户 ogr