python操作数据库mysql

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())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值