python怎么连接数据库

2025-04-20 08:37:27

1、1,将两个docker 连接起来首先需要搭建环境:在alpine下面创建mariadb数据库:https://blog.csdn.net/freewebsys/article/details/53540615用户名密码是root。然后创建http的python环境:https://blog.csdn.net/freewebsys/article/details/53509676接下来做一个简单数据查询和插入操作。

2、2,p鲻戟缒男ython代码:main.py?1234567891011121314151617181920212223242526272829303132泌驾台佐3334353637383940414243444546474849505152535455565758596061626364#!/usr/bin/python# -*- coding: utf-8 -*-from flask import Flaskimport MySQLdbapp = Flask(__name__)mysql_host = "mysql"mysql_user = "root"mysql_pwd = "root"mysql_db_name = "demo""""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 resultdef 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()@app.route("/list")def list():results = query_db(" select id,name from `demo`.`user_info` ")out = "results:\n"for result in results:id = result[0]name = result[1]out += "id:" + str(id) + ",name:" + name +"\n"return out@app.route("/add")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,写死增加。

3、创建数据库表mysql需要创建下数据库和表:?123456CREATE 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在一个容器上面。

4、4,使用link连接起来数据创建名称叫mariadb。跑http。?1docker run -d -p 5000:5000 --name py-http --link mariadb:mysql demo/py-http:1.0特别注意这里的–link 容器名:昵称,然后对于py-http容器来说mysql就是昵称了。可以直接看下evn环境:?12345678910111213141516171819# docker exec -it py-http bashbash-4.3# envHOSTNAME=db7f7aba7c2fMYSQL_ENV_MYSQL_ROOT_PASSWORD=rootMYSQL_ENV_MARIADB_VERSION=10.1.19+maria-1~jessieMYSQL_ENV_GOSU_VERSION=1.7MYSQL_PORT_3306_TCP_PORT=3306MYSQL_ENV_MARIADB_MAJOR=10.1MYSQL_PORT_3306_TCP=tcp://172.17.0.2:3306PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binPWD=/TZ=Asia/ShanghaiSHLVL=1HOME=/rootMYSQL_NAME=/py-http/mysqlMYSQL_PORT_3306_TCP_PROTO=tcpMYSQL_PORT_3306_TCP_ADDR=172.17.0.2MYSQL_PORT=tcp://172.17.0.2:3306_=/usr/bin/env可以看到,在py-http容器下面已经把mariadb容器的环境变量直接引入了。并且查看hosts:?123456789# cat /etc/hosts127.0.0.1 localhost::1 localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters172.17.0.2 mysql 48bd5fbf3ddc mariadb172.17.0.3 db7f7aba7c2f可以看到有了mysql变量的host了。在外部访问:就说明测试成功。数据库能插入查询了。?12345# curl https://127.0.0.1:5000/addok[root@localhost http]# curl https://127.0.0.1:5000/listresults:id:1,name:zhangsanid:2,name:zhangsan

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢