Python连接Mysql,实现增删改查

首先,插入pymysql模块

import pymysql

 通过pymysql进行连接

首先 右击此电脑 点击管理 在服务中 打开mysql服务(如图)

 

然后再在mysql终端里输入密码。

 

显示打开成功。

ps:数据库中的表是已准备好的

接下来 在parcharm里 用pymysql进行连接:

try:
    # 进行连接
    connect_db = pymysql.connect(host="localhost", user="root", password="xxxxxx",charset='utf8',database="demo")
    print("successful")
except:
    print('failed')

由于我用pymysql是1.0.2版本的 需要填写6个参数 

(host="localhost", user="root", password="123456",charset='utf8',database="demo",port=3306)

分别代表本地名,用户名,密码,编码类型,数据库名和端口名

这个时候进行连接如果显示successful则表示连接成功

获取游标

cur1 = connect_db.cursor()

编写数据库指令 

sql_str = '''select * from goods'''

执行数据库指令(此处为查询)

row_count = cur1.execute(sql_str)
print(f'查询到:',row_count,'条记录')

获取一条结果

reuslt = cur1.fetchone()
print(reuslt)

获取多条结果:

reuslt = cur1.fetchall()

获取指定条数结果(4条)

reuslt = cur1.fetchmany(4)

 

关闭游标与数据库连接

cur1.close()
connect_db.close()

获得查询结果:

 

此部分全部代码:

import pymysql
try:
    # 进行连接
    connect_db = pymysql.connect(host="localhost", user="root", password="xxxxxx",charset='utf8',database="demo")
    print("successful")
except:
    print('failed')

# 获取游标
cur1 = connect_db.cursor()
cur2 = connect_db.cursor()

# 操作数据
# 写数据库操作指令
sql_str = '''select * from goods'''

# 执行sql语句
row_count = cur1.execute(sql_str)
print(f'查询到:',row_count,'条记录')
print('*' * 20)

#获取一条查询结果
reuslt = cur1.fetchone()
print(reuslt)

print('*' * 20)

# 获取指定条数的记录
reuslt = cur1.fetchmany(4)
for t in reuslt:
    print(t)

print('*' * 20)

# 获取所有数据
reuslt = cur1.fetchall()
for t in reuslt:
    print(t)
print('*' * 20)

# 新游表获取所有数据
row_count = cur2.execute(sql_str)
reuslt = cur2.fetchall()
for t in reuslt:
    print(t)
print('*' * 20)


# 关闭游标
cur1.close()
cur2.close()

# 关闭数据库对象
connect_db.close()



插入,删除和更新类似,代码展示(插入) :

import pymysql

try:
    con = pymysql.connect(host='localhost',user='root',password='xxxxxx',charset='utf8',database='demo')
    print('成功连接数据库')
except:
    print('连接失败')

cur1 = con.cursor()

# 插入语句
sql_str = '''insert into goods(name,cate_id,brand_id) value('Macbook PRO',1,1);'''

#  执行
cur1.execute(sql_str)



# 提交
con.commit()

# 关闭游标
cur1.close()

# 关闭连接
con.clos

但是多了一 个:con.commit ()  因为:

'''
在给数据库 增删改时会在默认的事物环境中进行操作,操作完成后,要进行手动提交操作,如果不提交 程序默认操作为回滚 
刚才操作的过程将不会被记录

事物的提交操作 由数据库连接对象来完成
'''

删除:

sql_str = '''delete from goods where id = 25;'''

通过py可以对表进行一个多条数据的插入:

原理很简单,一个for in循环即可:


# 开启自动提交
conn.autocommit(True)


cur1 = conn.cursor()

sql_str = '''insert into test_index values(%s,%s)'''

# 如果自动提交开启的话 需要手动开启事物
# conn.begin()

for i in range(10001):
    s = f'data-{i}'
    cur1.execute(sql_str,[i,s])

部分结果展示: 

 

 

mysql注入问题的参数解决:

执行中写入第二个参数即可 如图:

# 让用户输入数据进行查询
select_id = input('请输入一个查询的id:')
# sql 注入问题产生的原因:
# 查询时利用sql的合法规则 查询到了不应该得到的数据,称为sql注入问题
# sql_str = '''select * from goods where id = %s;''' % select_id

# 安全版
sql_str = '''select * from goods where id = %s;'''
print(sql_str)

#  执行 利用excute的第二个参数,来解决sql的注入问题
cur1.execute(sql_str,(select_id))
result = cur1.fetchall()

print(result)

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值