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()

原文地址:http://blog.51cto.com/jacksoner/2113454

时间: 2024-10-11 04:25:42

mysql连接模块的相关文章

PHP基于HTTPD模块的方式跟MYSQL连接

实验环境: 1.VMware 2.两台linux子机 3.桥接,本机当客户机 实验目的: 1.编译HTTPD和编译PHP.编译MYSQL,熟悉编译过程和原理 2.HTTPD和PHP在同一台服务器上,PHP作为HTTPD的模块来与MYSQL建立连接 实验拓扑: 二进制格式安装mysql 1.安装包组和依赖所用到的包 #yum install pcre-devel #yum groupinstall 'development tools' #yum groupinstall 'desktop pla

mysql连接池模块

如果不想程序在查询数据时卡死或等待过长时间,一般不推荐在node中开启一个连接后全部查询都用这个链接并且不关闭.因为node里面的mysql不像php里的那样会在完成查询后断开,只要不主动断开,连接一直存在,当连接数量达到一定数量时就会产生严重的阻塞,出现各种延时和卡死现象.在并发量较大时,可以通过建立连接池来缓解并发压力. 在node中的mysql模块里其用来操作数据的query()方法接收的参数是不同的,在使用时需要特别注意.具体模块如下: /** * mysql连接池模块 * @autho

node.js中mysql连接池的使用

https://cnodejs.org/topic/58378543bde2b59e06141f5a 起初的做法是创建一个连接然后使用,后来发现一段时间后会出现卡死不响应的情况,只有重启nodejs服务,搜索一番后想到了用连接池,经测试,不再出现卡死不响应情况. 参考链接: https://www.npmjs.com/package/mysql http://blog.csdn.net/lovingshu/article/details/41721233 Node.js mysql连接池模块 1

十二、Python高级功能之Mysql数据库模块

Python高级功能之Mysql数据库模块 安装python mysql组件 # yum -y install MySQL-python.x86_64 以下根据实例来说明: >>> import MySQLdb >>> conn = MySQLdb.connect(user='root',passwd='2wdc%RDX',host='localhost')  #连接数据库(到服务器的连接) >>> cur = conn.cursor()  # 创建游

Mysql逻辑模块组成

总的来说,MySQL可以看成是二层架构,第一层我们通常叫做SQL Layer,在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断,sql解析,执行计划优化,query cache的处理等等:第二层就是存储引擎层,通常叫做Storage Engine Layer,也就是底层数据存储操作实现部分,由多种存储引擎共同组成.所以,可以用如下图来MySQL的基础架构. SQL Layer中包含了多个子模块 1.  初始化模块 初始化模块就是在MySQL Server启动的时候

MySQL连接问题【mysql_connect和mysql_pconnect区别】

--MySQL连接问题[mysql_connect和mysql_pconnect区别] -----------------------------------------------------------转载 apache模块方式下: 区别在于当php以apache模块方式运行时, 由于apache有使用进程池, 一个httpd进程结束后会被放回进程池, 这也就使得用pconnect打开的的那个mysql连接资源不被释放, 于是有下一个连接请求时就可以被复用.  这就使得在apache并发访问

MySQL逻辑模块工作配合

启动MySQL 1.初始化模块执行&&存储引擎初期化执行 2.1中执行完成后 ---->连接管理模块接手 3.连接管理模块启动处理客户端连接请求的监听程序(tcp/ip 网络监听.unix 的socket) 4.启动完成.准备接收请求 客户端连接 5.监听到客户端的连接请求(运用网络交互模块中相关功能)---->通过Client & Server 交互协议模块协议----通讯匹配----> 6.连接管理模块----请求转发---->线程管理模块----控制转

nodejs + redis/mysql 连接池问题

nodejs + redis/mysql 连接池问题 需不需要连接池 连接池的作用主要是较少每次临时建立连接所带来的开销.初步一看,nodejs运行单线程上,它不能同时使用多个连接,乍一看是不需要连接池的.但是这只是我们初步下意识的感觉,下面我们详细分析来看看这个结论对是不对. 先从简单的redis开始. redis服务器也是运行在单线程上的.俩都是单线程,看起来更加坚定不需要连接池的结论了. 从详细的图像来看看nodejs 连接 redis用连接池有没有意义. 上图中,nodejs共有俩连接,

MySQL各模块工作配合

MySQL各模块工作配合 在了解了 MySQL 的各个模块之后,我们再看看 MySQL 各个模块间是如何相互协同工作的 .接下来,我们通过启动 MySQL,客户端连接,请求 query,得到返回结果,最后退出,这样一整个过程来进行分析. 当我们执行启动 MySQL 命令之后, MySQL 的初始化模块就从系统配置文件中读取系统参数和命令行参数,并按照参数来初始化整个系统,如申请并分配 buffer,初始化全局变量,以及各种结构等.同时各个存储引擎也被启动,并进行各自的初始化工作.当整个系统初始化