Python(9):连接MySQL
来源:互联网 发布:h3c 把端口加入vlan 编辑:程序博客网 时间:2024/06/18 03:35
关于MySQL的文章。
Review:MySQL复习
下载pymysql。
导入包。
import pymysql.cursors
连接数据库。
# 连接数据库connect = pymysql.Connect( host='localhost', port=3306, user='xxx', passwd='xxx', db='xx_db', charset='utf8')
cursor = connect.cursor()
别人总结的一些常用函数。
pymysql.Connect()参数说明host(str): MySQL服务器地址port(int): MySQL服务器端口号user(str): 用户名passwd(str): 密码db(str): 数据库名称charset(str): 连接编码connection对象支持的方法cursor() 使用该连接创建并返回游标commit() 提交当前事务rollback() 回滚当前事务close() 关闭连接cursor对象支持的方法execute(op) 执行一个数据库的查询命令fetchone() 取得结果集的下一行fetchmany(size) 获取结果集的下几行fetchall() 获取结果集中的所有行rowcount() 返回数据条数或影响行数close() 关闭游标对象
下面就是CRUD操作。
增、删、改、查、提交事务、回滚。
下面的代码就直接粘贴别人的了。
# 插入数据sql = "INSERT INTO trade (name, account, saving) VALUES ( '%s', '%s', %.2f )"data = ('雷军', '13512345678', 10000)cursor.execute(sql % data)connect.commit()print('成功插入', cursor.rowcount, '条数据')# 修改数据sql = "UPDATE trade SET saving = %.2f WHERE account = '%s' "data = (8888, '13512345678')cursor.execute(sql % data)connect.commit()print('成功修改', cursor.rowcount, '条数据')# 查询数据sql = "SELECT name,saving FROM trade WHERE account = '%s' "data = ('13512345678',)cursor.execute(sql % data)for row in cursor.fetchall(): print("Name:%s\tSaving:%.2f" % row)print('共查找出', cursor.rowcount, '条数据')# 删除数据sql = "DELETE FROM trade WHERE account = '%s' LIMIT %d"data = ('13512345678', 1)cursor.execute(sql % data)connect.commit()print('成功删除', cursor.rowcount, '条数据')# 事务处理sql_1 = "UPDATE trade SET saving = saving + 1000 WHERE account = '18012345678' "sql_2 = "UPDATE trade SET expend = expend + 1000 WHERE account = '18012345678' "sql_3 = "UPDATE trade SET income = income + 2000 WHERE account = '18012345678' "try: cursor.execute(sql_1) # 储蓄增加1000 cursor.execute(sql_2) # 支出增加1000 cursor.execute(sql_3) # 收入增加2000except Exception as e: connect.rollback() # 事务回滚 print('事务处理失败', e)else: connect.commit() # 事务提交 print('事务处理成功', cursor.rowcount)应该在finally里面写,关闭连接。即三段式结构:try、catch、finally。
关闭连接。
# 关闭连接cursor.close()connect.close()
查了一下,还有一次性直接执行多条语句的写法。
sql = "INSERT INTO china_index (_date,_sse50_total_return_index,_csi300_total_return_index,_signal_sse50,_signla_csi300,_remark) VALUES (%s,%s,%s,%s,%s,%s);"
不管是什么数据类型,都用%s,不用加引号
idx_mat = idx_df.valuesvals = []for t in range(idx_mat.shape[0]): val = (idx_mat[t,2],idx_mat[t,0],idx_mat[t,1],0,0,'') vals.append(val)ret = cursor.executemany(sql, vals)connect.commit()有人说,for循环执行sql比这个执行慢多了。
那你for循环以后,不要commit嘛…
拼N条sql,统一提交一次嘛。
0 0
- Python(9):连接MySQL
- python连接mysql(PyMySQL)
- Python连接Mysql 连接池
- python 连接MYSQL数据库(入门帖)
- spark连接mysql数据库(python语言)
- python连接mysql数据库
- Python连接MySQL
- python连接mysql数据库
- python连接mysql
- python 连接mysql
- python连接MySQL数据库
- Python连接mysql数据库
- Python连接mysql
- python 连接mysql
- python连接mysql
- Python连接MYSQL --- MySQLdb
- python连接mysql数据库
- python连接mysql
- Android Styles & Themes——Theme
- Javaweb 01—Tomcat和http协议
- Android双向滚动ScrollView
- 【深入剖析Tomcat笔记】第四篇 默认连接器
- 自定义平滑滑动页面的组件:DragableSpace
- Python(9):连接MySQL
- 上传文件,并获取文件名
- android计时器类CountDownTime的运用及扩展
- redis 命令操作笔记
- java面试整理(一)
- Android获取其他包的Context实例,然后调用它的方法
- Android中在屏幕上涂鸦的例子
- System.getProperties的key与value.
- Android颜色选择器