m0_69693998 2024-06-13 00:12 采纳率: 45.2%
浏览 2
已结题

关于#python#的问题:result = conn.execute("select 1")(相关搜索:数据库)

这个是什么原因呢,数据库的密码和数据库名称都是对的,出现这种情况要怎么解决

img


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


app = Flask(__name__)



#MYSQL所在的主机名
HOSTNAME ="127.0.0.1"
#MYSQL监听的端口号,默认3306
PORT = 3306
#连接MYSQL的用户名,读者用自己设置的
USERNAME = "root"
#连接MySQL的密码,读者用自己的
PASSWORD = "123456"
# MYSOL上创建的数据库名称
DATABASE = "game_aquarium77"

app.config['SQLALCHEMY_DATABASE_URI'] = f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8'




#在app.config中设置好连接数据库的信息,然后使用SQLAlchemy(app)创建一个db对象
db=SQLAlchemy(app)

db=SQLAlchemy(app)
with app.app_context():
    with db.engine.connect() as conn:
        result = conn.execute("select 1")
        print(result.fetchone())

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-13 00:12
    关注

    引自免费微信小程序:皆我百晓生

    从提供的代码片段来看,主要问题是SQLAlchemy实例被重复创建了两次,这违反了Flask-SQLAlchemy的使用规则,即每个Flask应用只应该初始化一个SQLAlchemy实例。在你的代码中,SQLAlchemy(app)被调用了两次,这导致了错误。

    为了解决这个问题,你需要移除重复的SQLAlchemy(app)实例化语句,保留一个即可。修改后的代码如下所示:

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    
    # MYSQL所在的主机名
    HOSTNAME = "127.0.0.1"
    # MYSQL监听的端口号,默认3306
    PORT = 3306
    # 连接MYSQL的用户名,读者用自己设置的
    USERNAME = "root"
    # 连接MySQL的密码,读者用自己的
    PASSWORD = "123456"
    # MYSOL上创建的数据库名称
    DATABASE = "game_aquarium77"
    
    app.config['SQLALCHEMY_DATABASE_URI'] = f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8'
    
    # 在app.config中设置好连接数据库的信息,然后使用SQLAlchemy(app)创建一个db对象
    db = SQLAlchemy(app)
    
    # 以下代码确保只有在运行此脚本时才执行,而不是在导入时执行
    if __name__ == '__main__':
        with app.app_context():
            with db.engine.connect() as conn:
                result = conn.execute("SELECT 1")
                print(result.fetchone())
    

    另外,为了确保代码的健壮性和可维护性,建议将数据库配置信息放在单独的配置文件或环境变量中,而不是硬编码在代码中。这样可以方便地在不同的环境中切换配置,比如开发环境、测试环境和生产环境。

    此外,使用SELECT 1作为测试查询是一个好的实践,因为它通常能快速返回结果,并且不需要复杂的表结构或数据。如果这个简单的查询失败,那么问题很可能出在数据库连接或配置上。

    最后,确保你的pymysqlflask_sqlalchemy包是最新的,或者至少与你的Flask版本兼容,以避免潜在的兼容性问题。如果有必要,可以尝试更新这些包到最新版本,或者回滚到一个已知稳定的版本。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月21日
  • 已采纳回答 6月13日
  • 创建了问题 6月13日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见