import pymysql
#调用pymysql模块的connect()函数创建connection连接对象
#必备参数有’连接名称‘,’用户名‘,’密码‘,’数据库名‘,注意参数顺序
db = pymysql.connect('localhost','root','root','test')
#调用游标cursor()方法,创建cursor对象
cursor = db.cursor()
#执行sql语句查询数据库版本
cursor.execute('select version()')
data = cursor.fetchone()
print(data) #
cursor.close()
db.close()
#out: ('5.7.31-log',)
将connect传入参数改为关键字参数,传入的时候可以不再注意参数顺序。
上述部分代码修改如下
db = pymysql.connect(host='localhost',user='root',database='test',password='root')
使用create table 表名
创建表。
import pymysql
db = pymysql.connect('localhost','root','root','test')
cursor = db.cursor()
#如果books表存在就删除它,这样防止创建失败
cursor.execute('drop table if exists books')
sql = '''
CREATE TABLE books(
id int(8) NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
category varchar(50) NOT NULL,
price decimal(10,2) DEFAULT NULL,
publish_time date DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
cursor.execute(sql)
cursor.close()
db.close()
AUTO_INCREMENT表示自增
PRIMARY KEY 主键
decimal(10,2) 保持两位小数点
1.插入一条数据。
注意:mysql的占位符为%s,跟SQLite的?不一样。
import pymysql
db = pymysql.connect('localhost','root','root','test',charset='utf8')
cursor = db.cursor()
#定义data元组存放要写入表中的数据
data = ('Python从入门到放弃','计算机类','56.99','2020-10-11')
#Mysql中使用%s作为占位符
sql = "insert into books(name,category,price,publish_time) value (%s,%s,%s,%s)"
cursor.execute(sql,data)
cursor.close()
db.close()
2.插入多条数据;
import pymysql
db = pymysql.connect('localhost','root','root','test',charset='utf8')
cursor = db.cursor()
#定义data列表存放要写入表中的多条数据
data = [
('Python从入门到放弃','计算机类','56.99','2020-10-11'),
('Linux从入门到放弃','计算机类','58.99','2020-10-11'),
('吃饭从入门到放弃','生活类','23.69','2020-10-11'),
('睡觉从入门到放弃','生活类','15.59','2020-10-11')
sql = "insert into books(name,category,price,publish_time) value (%s,%s,%s,%s)"
#使用executemany()插入多条数据
cursor.executemany(sql,data)
cursor.close()
db.close()
3.使用try:except:
发生错误时回滚数据;
import pymysql
db = pymysql.connect('localhost','root','root','test',charset='utf8')
cursor = db.cursor()
#定义data列表存放要写入表中的多条数据
data = [
('Python从入门到放弃','计算机类','56.99','2020-10-11'),
('Linux从入门到放弃','计算机类','58.99','2020-10-11'),
('吃饭从入门到放弃','生活类','23.69','2020-10-11'),
('睡觉从入门到放弃','生活类','15.59','2020-10-11')
sql = "insert into books(name,category,price,publish_time) value (%s,%s,%s,%s)"
#使用executemany()插入多条数据
cursor.executemany(sql,data)
db.commit()
except:
db.rollback()
cursor.close()
db.close()
修改删除查询
跟操作SQLite一样,点此转送
学习来自:《python从入门到项目实践》明日科技 第十五章