python连接mysql数据库补充

 Mysql.py,通过网页输入来实现数据库表的增删改查

from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime

from sqlalchemy import text

app = Flask(__name__)

HOSTNAME = 'localhost'
# HOSTNAME = '127.0.0.1',这俩就是一样的


PORT = 3306

USERNAME = 'root'

PASSWORD = '341533'

DATABASE = 'kafka'

app.config[
    'SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4"
#这个db对象就包括了sqlalchemy和sqlalchemy.orm中的所有函数和助手

app.config['SQLALCHEMY_ECHO']=True
#加上这俄格就会在周围形成2大叔控1

db = SQLAlchemy(app)

with app.app_context():
    # with app.app_context():就是应用上下文,这里必须要有,整个项目可以有多个
    with db.engine.connect() as conn:
        rs = conn.execute(text("select * from s"))
        # text是必要的,这里似乎和sqlite3数据库那边有所不同,那边可以直接execute执行
        for i in rs.fetchall():
            print(i)


class User(db.Model):
    __tablename__ = 'flask_one'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(100), nullable=False)
    password = db.Column(db.String(100), nullable=False)
    # db.String(100)会映射成varchar(100),db.Integer就是int,nullable=False就是不为空
    # autoincrement=True就是这个int类型会自增,


with app.app_context():
    db.create_all()
    # 这里的把全部orm模型类映射成mysql的对应数据库中的表,表名就是__tablename__,
    # db.Model是所有的orm模型类的父类,必须直接或间接继承,类属性经过db.Column对象方法的赋值才能被映射成同名字段


# 我才发现这个app_id等这种后面的变量不在绑定的函数中用的话就会报错(不是形参就报错)
# 我发现连接同一个手机热点的多个设备,用的路由是一样的,这多个设备也都可以ping通这路由,但是不能互相ping通
# 当然,这多个设备都可以直接ping通这个手机的ip地址,
# 所以当我用手机热点给这个电脑连接的时候,(本来一般在同一个局域网就能互相访问)就可以用手机访问这个设置了host=‘0.0.0.0’的flask程序,当然要在电脑ip后面加上  :对应端口号
# 并且还可以修改保存,我在博客上已经验证过了,那个不同的手机热点连接下,电脑ip是不同的,由此形成的访问地址也不同,但是连接这个热点的另一个设备不能访问
@app.route("/add/<username>/<password>")
def add(username, password):
    user1 = User(username=username, password=password)

    db.session.add(user1)
    db.session.commit()
    return f"添加用户{username}成功"
    #sessiton会话是临时工作区,可以存储处理当前操作,提交后,才会更新到数据库,否则当你不小心关闭会话或者会话超时,未提交的数据将会丢失

@app.route("/query_u/<username>")
def query_username(username):
    flask_users = User.query.filter_by(username=username).all()
    for user in flask_users:
        print(f"{user.password}--{user.username}--{user.id}")

    return render_template("query_u.html", flask_users=flask_users)


@app.route("/query_p/<password>")
def query_password(password):
    flask_users = User.query.filter_by(password=password).all()
   # flask_user = User.query.filter_by(password=password).first()  一个数据对象一般这模写,
    for user in flask_users:
        print(f"{user.password}--{user.username}--{user.id}")
    return render_template("query_p.html", flask_users=flask_users)


@app.route("/query/all")
def query_all():
    flask_users = User.query.all()
    #类名加上的query.all()就是返回字典列表???
    count=0
    for flask_user in flask_users:
        print(f"{flask_user.username}- {flask_user.password}-{flask_user.id}")
        count+=1
    return render_template("query_all.html", flask_users=flask_users,count=count)


@app.route("/query_id/<id>")
def query_id(id):
    flask_user = User.query.get(id)
    print(f"{flask_user.username}- {flask_user.password}-{flask_user.id}")
    return f"根据主键查询数据成功{flask_user.username}- {flask_user.password}-{flask_user.id}"


@app.route("/change_name/<id>/<username>")
def change_u(username, id):
    flask_user = User.query.get(id)
    flask_user.username = username
    db.session.commit()
    return f"{id}所对应的对象username修改成功"


@app.route("/change_pwd/<id>/<password>")
def change_p(password, id):
    flask_user = User.query.get(id)
    flask_user.password = password
    db.session.commit()
    return (f"{id}所对应的对象password修改成功")

@app.route("/change_pwd/all/<password>")
def change_pall(password):
    flask_users = User.query.all()
    for user in flask_users:
        user.password = password

    db.session.commit()
    return f"所有对象password修改成功"


@app.route("/change_name/all/<username>")
def change_uall(username):
    flask_users = User.query.all()
    for user in flask_users:
        user.username = username
    db.session.commit()
    return f"所有对象username修改成功"


@app.route("/delete/<id>")
def deleteid(id):
    flask_user = User.query.get(id)
    db.session.delete(flask_user)
    db.session.commit()
    return f"主键{id}对应的{flask_user.username}已被删除"


@app.route("/delete/all")
def deleteall():
    flask_users = User.query.all()
    for i in flask_users:
        db.session.delete(i)
        db.session.commit()

    return f"所有数据对象已被删除"


if __name__ == '__main__':
    app.debug = True
    app.run(host='0.0.0.0', port=5000)

    # 数据库的会话回滚操作就是,撤销当前会话中所有未提交的事务,事务就是一堆有联系的要么一起执行成功,要么一起执行失败的sql语句,mysql中是用ROLLBACK函数
    # 我的理解是会话是预执行,可以一次性提交,可以把获取的每一个对象都理解成一个字典

query_all.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
     {% for i in flask_users %}
       <h3>{{i.username}}--- {{i.password}}---{{i.id}}</h3>




     {% endfor %}
 <h2>全查询成功,一共{{count}}个对象</h2>
</body>
</html>

query_p.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
     {% for i in flask_users %}
       <h3>{{i.username}}--- {{i.password}}---{{i.id}}</h3>




     {% endfor %}
</body>
</html>

query_u.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {% for i in flask_users %}
       <h5>{{i.username}}--- {{i.password}}---{{i.id}}</h5>




    {% endfor %}
</body>
</html>

Django报错:TemplateSyntaxError at / Invalid block tag: 'else', expected 'empty' or 'endfor'-CSDN博客

这个报错一开始没注意,那个%和{}之间不能有空格

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
服务器Python连接MySQL数据库的过程需要以下几个步骤。 首先,需要安装PythonMySQL驱动程序。Python的安装可以通过官网下载并按照指引完成安装,MySQL驱动可以使用Python的"pip"指令来安装。安装完成后,就可以在Python中调用MySQL驱动程序来完成对MySQL数据库的访问。 其次,需要创建一个连接对象,来实现PythonMySQL数据库之间的通信。连接对象需要输入MySQL的服务器地址、用户名、密码等信息。通过此连接对象,Python可以通过SQL语句向MySQL数据库发送请求,并获取返回的数据。 在连接对象建立后,Python代码需要使用SQL语句来操作MySQL数据库。常用的SQL语句包括查询数据、插入数据、更新数据和删除数据等操作。 对于查询数据操作,Python代码需要先构建一个SQL语句,然后调用已建立的连接对象发送此SQL语句,MySQL数据库返回查询结果,Python代码再处理数据并将结果输出。 插入、更新和删除数据的操作与查询数据类似,需要构建SQL语句,并通过连接对象发送此SQL语句才能完成操作。 最后,需要关闭连接对象,释放PythonMySQL数据库之间的资源。这个过程可以通过连接对象的"close()"方法实现。 总之,服务器Python连接MySQL数据库是一种常见的数据处理方式,通过上述步骤可以很容易地实现PythonMySQL数据库之间的通信和数据操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值