docker(7):使用python 连接数据库,插入并查询数据--link
首先需要搭建环境:
在alpine下面创建mariadb数据库:
http://blog.csdn.net/freewebsys/article/details/53540615
用户名密码是root。
然后创建http的python环境:
http://blog.csdn.net/freewebsys/article/details/53509676
接下来做一个简单数据查询和插入操作。
CREATE DATABASE `demo` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE TABLE `demo`.`user_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; def query_db(sql): db = MySQLdb.connect(mysql_host, mysql_user, mysql_pwd, mysql_db_name) cur = db.cursor() try: cur.execute(sql) result = cur.fetchall() except: print("error: sql:" + sql) cur.close() db.close() return result def update_db(sql): print(sql) db = MySQLdb.connect(mysql_host, mysql_user, mysql_pwd, mysql_db_name) cur = db.cursor() try: cur.execute(sql) except: print("error: sql:" + sql) db.commit() cur.close() db.close()
def add(): sql = " insert ignore into `demo`.`user_info`(`name` ) values (zhangsan) " update_db(sql) return "ok" if __name__ == "__main__": app.run(host=0.0.0.0, port=5000)
代码和之前的http没有太大区别,只是增加了数据库的查询和插入操作。
一共就有两个url,一个list,查询全部数据,一个add,写死增加。
CREATE DATABASE `demo` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE TABLE `demo`.`user_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这个user_info表一共就有两个字段,一个id自增,一个是name字符串的。
当然这个数据库不在本地,是另外的一个docker 容器。
http在一个容器上面。
docker run -d -p 5000:5000 --name py-http --link mariadb:mysql demo/py-http:1.0
特别注意这里的–link 容器名:昵称,然后对于py-http容器来说mysql就是昵称了。
可以直接看下evn环境:
MYSQL_PORT_3306_TCP=tcp://172.17.0.2:3306 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PWD=/ TZ=Asia/Shanghai SHLVL=1 HOME=/root MYSQL_NAME=/py-http/mysql MYSQL_PORT_3306_TCP_PROTO=tcp MYSQL_PORT_3306_TCP_ADDR=172.17.0.2 MYSQL_PORT=tcp://172.17.0.2:3306 _=/usr/bin/env
可以看到,在py-http容器下面已经把mariadb容器的环境变量直接引入了。
并且查看hosts:
可以看到有了mysql变量的host了。
在外部访问:就说明测试成功。数据库能插入查询了。
# curl http://127.0.0.1:5000/add ok[root@localhost http]# curl http://127.0.0.1:5000/list results: id:1,name:zhangsan id:2,name:zhangsan
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/53589604 未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys
docker设计的挺好的,每一个容器虽然独立,但是还可以连接起来。
这样组成一个微服务的集群。通过环境变量,把代码和环境分离。
保证测试环境,开发环境,线上环境的的一致。
极大的方便了开发运维,link 命令也非常好使。
基于微博数据用 Python 打造一颗“心” 一年一度的虐狗节终于过去了,朋友圈各种晒,晒自拍,晒娃,晒美食,秀恩爱的。程序员在晒什么,程序员在加班。但是礼物还是少不了的,送什么好?作为程序员,我准备了一份特别的礼物,用以往发的微博数据打造一颗“爱心”,我想她一定会感动得哭了吧。哈哈
相关文章
- Python 操作 Kafka --- kafka-python
- Python脚本扫描给定网段的MAC地址表(scapy或 python-nmap)
- Python脚本写端口扫描器(socket,python-nmap)
- Python 包含文件夹路径转字典
- 和金融相关的python包汇总
- Docker中mysql修改配置导致无法启动的docker容器
- python输入input的用法
- Python分享:python爬虫可以用来做什么?
- 119 python高级 - 多线程threading(二)
- python re模块正则表达式详解
- Docker和docker-compose使用总结
- gyp ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- Windows下启动Docker容器遇到Error invoking remote method ‘docker-start-container‘: Error解决办法
- 【Python】paddlepaddle docker python2.7 centos运行
- 《树莓派Python编程入门与实战》——2.1 了解Linux
- python快速排序实现元素递增
- Docker容器重启策略以及docker run的--restart选项详解
- Python 数据分析教程之如何验证线性回归的假设,线性回归的假设是什么?以及如何用python验证它们?
- 【转载】python的魔法方法———A Guide to Python's Magic Methods
- Python 使用PyMySql 库 连接MySql数据库时 查询中文遇到的乱码问题(实测可行) python 连接 MySql 中文乱码 pymysql库
- Docker问题——安装过程中问题Errors were encountered while processing: docker-ce
- 华为OD机试 - 简易压缩算法(Python) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 - 最近的点(Python) | 机试题+算法思路+考点+代码解析 【2023】
- 【Python基础】我的第一个 python 程序
- python 在已有记录规则下增加权限
- Python 基础 之 python 中 进程、线程、协程对比 区别和联系
- 用python做自己主动化測试--绘制系统性能趋势图和科学计算
- python解决urllib2乱码问题
- 学习笔记(34):Python网络编程&并发编程-异步调用与回调机制
- 在docker中安装docker,轻松实现 docker in docker (dind)的应用,并在带有docker的Linux系统中安装基础依赖,搭建Python环境,部署自己的项目或CI和测试
- python使用sessions模拟登录淘宝
- Python 淘宝联盟-佣金设置 批量设置佣金和服务费