mysql连接模块

mysql连接模块

什么是 PyMySQL?
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

PyMySQL 安装
pip install PyMySQL

数据库连接
连接数据库前,请先确认以下事项:
已经创建了数据库 TESTDB
mysql> desc stu;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(100) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | NO | | NULL | |
| age | int(100) | NO | | NULL | |
+-------+--------------+------+-----+---------+----------------+

#打开数据库连接
conn = pymysql.connect(host="192.168.1.48", port=3306, user="root", passwd="123456", db="TESTDB")

#使用cursor()方法获取操作游标
cus = conn.cursor()

sql = "select * from stu;"

#使用execute方法执行SQL语句
cus.execute(sql)

#使用 fetchone() 方法获取一条数据
result = cus.fetchall()
print(result)

#关闭游标连接
cus.close()

#关闭数据库连接
conn.close()

执行以上脚本输出结果如下:
((1, 'a', 12), (2, 'b', 13))

mysql事物

MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!

在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务
事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行
事务用来管理 insert,update,delete 语句

禁止自动提交:

mysql> show variables like "%autocommit%";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | ON |
+---------------+-------+
1 row in set (0.00 sec)

mysql> SET AUTOCOMMIT=0;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like "%autocommit%";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | OFF |
+---------------+-------+
1 row in set (0.00 sec)

当执行一堆insert语句后,需要commit才能显示数据,否则就没有insert成功

import pymysql

conn = pymysql.connect(host="192.168.1.48", port=3306, user="root", passwd="123456", db="TESTDB")
cus = conn.cursor()
sql_insert = "insert into stu(name,age) values('d',15);"
cus.execute(sql_insert)
cus.execute('commit')
sql_select="select * from stu;"
cus.execute(sql_select)
#获取第3条数据
#reject=cus.fetchmany(3)
#获取第一条数据
#reject=cus.fetchone()
#查看所有数据
reject=cus.fetchall()

print(reject)
#conn.close()

实例:通过写一个类,这样好处就是数据库只调用一次

import pymysql

#定义一个类,构造函数写成字典形式
class TestMysql(object):
def init(self):
self.dbConfig = {
"host": "192.168.1.48",
"port": 3306,
"user": "root",
"passwd": "123456",
"db": "TESTDB"
}
#多值传入,*karges字典 args:元组
conn = pymysql.connect(**self.dbConfig)
self.cus = conn.cursor()

def select(self):
    sql_select='select * from stu;'
    self.cus.execute(sql_select)
    reject=self.cus.fetchall()
    self.cus.close()
    print(reject)

def update(self):
    sql_update="update stu set name='e' where id=24;"
    self.cus.execute(sql_update)
    self.cus.execute('commit;')

if name == 'main':
conn = TestMysql()
conn.update()
conn.select()

转载于:https://blog.51cto.com/jacksoner/2113454

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值