【问题标题】:Python DB-Connection via stringPython DB-Connection via string
【发布时间】:2018-12-11 17:19:33
【问题描述】:

我在互联网上搜索了大约一个小时左右,但找不到解决我的问题的方法:

我正在尝试建立数据库连接。 如果我像这样打开连接一切正常:

db = pymysql.connect(host='127.0.0.1', user='python', db='test')

但是如果我想通过字符串建立连接,我会得到一个错误:

db_file = str("host='127.0.0.1', user='python', db='test'")
db = pymysql.connect(db_file)

错误信息:

pymysql.err.OperationalError: (2003, 'Can\'t connect to MySQL server on "host=\'127.0.0.1\', user=\'python\', db=\'test\'" ([Errno -2] Name or service not known)')

我希望任何人都可以通过告诉我如何通过字符串(或其他可预定义的东西)设置数据库连接来帮助我

【问题讨论】:

    标签: python database-connection pymysql


    【解决方案1】:

    您将单个字符串作为参数传递给函数 pymysql.connect(),但它至少需要 3 个参数:主机、用户、数据库。

    所以字符串 db_file 作为第一个参数(主机)被加载,其他两个没有任何内容,从而产生错误。

    正确的做法是这样的:

    host = '127.0.0.1',
    user ='python' 
    db ='test'
    db_conn = pymysql.connect(host, user, db)
    

    更新:

    如果您想直接使用连接文件,请尝试使用选项文件:

    https://dev.mysql.com/doc/connector-python/en/connector-python-option-files.html

    【讨论】:

    • 您好,感谢您的快速回复。我尝试调整一个旧的例程,其中我有一个 sqlite3 数据库文件(名称 db_file 来自那里),以简单地将我所有的东西写入数据库服务器。我真的不想重写所有这些旧的编码并到处替换参数。因此,我尝试使用一个参数设置连接。
    • 我建议你让你的代码库适应新方法,但是如果你想传递一个文件我建议你尝试使用选项文件:dev.mysql.com/doc/refman/8.0/en/option-files.html
    【解决方案2】:

    你不能像这样为多个参数传递一个字符串,你必须像这样将每个参数分配给它自己的变量;

    host = '127.0.0.1'
    user = 'python'
    db = 'test'
    db_connect = pymysql.connect(host, user, db)
    

    【讨论】:

    • 嗨,谢谢,但这对我没有用(请参阅我在 m.rp 的回答下的评论。
    • 不幸的是,您必须单独定义它们,尽管一旦定义了它们,您就可以在整个代码库中重用这些变量。
    • 我担心我不得不吞下这颗苦药:/
    猜你喜欢
    • 2017-01-13
    • 2022-10-05
    • 2020-12-11
    • 2021-04-09
    • 1970-01-01
    • 2018-03-23
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多