1.打开数据库,建立与数据库的连接
# 打开数据库连接
db = pymysql.connect(host = 'localhost',user = 'root',password = '123456',db = 'markov_project')
2.建立游标对象
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
3.创建表
sql语句里面就正常写mysql
sql = "CREATE TABLE IF NOT EXISTS `markov_matrix` ("\
"`eslid` varchar(12) NOT NULL,"\
"`00` int(10) NOT NULL,"\
"`01` int(10) NOT NULL,"\
"`10` int(10) NOT NULL,"\
"`11` int(10) NOT NULL,"\
"PRIMARY KEY (`eslid`)"\
") ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0"
cursor.execute(sql)
print("创建markov_matrix成功!")
注意:mysql里面表头或者字段不能用单引号来糊弄,要用 `
4.往表里加数据
添加数据
insert=cur.execute("insert into user1 values(1,'tom',18)")
print('添加语句受影响的行数:',insert)
这个受影响行数如果是-1,就是有问题,没有插入数据成功
如果返回的不是-1,就是插入成功
#另一种插入数据的方式,通过字符串传入值
sql="insert into user1 values(%s,%s,%s)"
insert = cur.execute(sql,(3,'kongsh',20))
print(insert)
#另一种插入数据的方式,通过字符串传入值
sql="insert into user1 values(%s,%s,%s)"
insert = cur.execute(sql,(3,'kongsh',20))
print(insert)
sql="insert into user1 values(%s,%s,%s)"
insert = cur.execute(sql,(2,'sdfsdf',22))
print(insert)
注意:每次插入数据要重新写一个sql,sql不可以复用,特别是在循环里面,每次插入一次数据就要写一次sql
批量添加数据
for k,v in dic.items():
sql = "insert into markov_matrix values(%s,%s,%s,%s,%s)"
insert = cursor.execute(sql,(k,v[0],v[1],v[2],v[3]))
5.提交操作到数据库
!!!!!!!!!!!!!!!!
db.commit() # 提交操作到数据库
这一步经常容易忘记,不提交操作,就算都是正确的,影响行数都是正,数据库里也没有数据!!!!!!
6.关闭游标和数据库
cursor.close()
# 关闭数据库连接
db.close()
7.查询数据库
访问每一行
# 打开数据库连接
db = pymysql.connect(host='localhost', user='root', password='123456', db='markov_project')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 获取整个表
cursor.execute("SELECT * FROM markov_matrix")
# 使用 cur.rowcount 获取结果集的条数
numrows = int(cursor.rowcount)
# print(numrows)
for row in range(numrows):
hang = cursor.fetchone()
print(hang)
查询到的数据库是这样以元组的形式查的
查询某特定字段的所有数据
# 获取整个表
eslid = list(self.all_eslid)[0]
cursor.execute("SELECT * FROM markov_matrix where eslid = %s",eslid)
print(cursor.fetchone())
如果有多个参数要指代的话,也可以用原则把参数放在一起(eslid,…)
cursor.execute("selected * from tstudent where age <=17 and sex = 1")
print(cursor.fetchall())