首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLAlchemy和sql 'Use‘命令

问SQLAlchemy和sql 'Use‘命令
EN

Stack Overflow用户
提问于 2020-05-18 09:23:40
回答 2查看 592关注 0票数 1

我正在使用sqlalchemy和create_engine连接到mysql,构建一个数据库并开始填充相关数据。

编辑,序言,需要首先创建有关的数据库。为此,我执行以下命令

代码语言:javascript
复制
database_address = 'mysql+pymysql://{0}:{1}@{2}:{3}'
database_address = database_address.format('username',
                                           'password',
                                           'ip_address',
                                           'port')
engine = create_engine(database_address, echo=False)

Database_Name = 'DatabaseName'
engine.execute(("Create Databse {0}").format(Database_Name)

在创建数据库之后,我尝试执行一个“use”命令,但最终收到了以下错误

代码语言:javascript
复制
line 3516, in _escape_identifier
    value = value.replace(self.escape_quote, self.escape_to_quote)

AttributeError: 'NoneType' object has no attribute 'replace'

我将错误跟踪到一个帖子,其中指出在python 3中使用以下命令时会发生这种情况。

代码语言:javascript
复制
engine.execute("USE dbname")

在execute命令中还需要包括哪些内容才能访问mysql数据库而不引发错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-18 09:49:58

您不应该使用USE命令,而是应该在create_engine连接url中指定要连接到的数据库,即:

代码语言:javascript
复制
database_address = 'mysql+pymysql://{0}:{1}@{2}:{3}/{4}'
database_address = database_address.format('username',
                                           'password',
                                           'ip_address',
                                           'port',
                                           'database')
engine = create_engine(database_address, echo=False)

create_engine文档在这里:https://docs.sqlalchemy.org/en/13/core/engines.html#mysql

票数 2
EN

Stack Overflow用户

发布于 2020-05-19 07:56:15

想出该怎么做,

按照Match的建议,我研究了SQLAlchemy及其创建模式的能力。

找到以下代码

代码语言:javascript
复制
from sqlalchemy import create_engine
from sqlalchemy_utils import database_exists, create_database

database_address = 'mysql+pymysql://{0}:{1}@{2}:{3}/{4}?charset=utf8mb4'
database_address = database_address.format('username','password','address','port','DB')
engine = create_engine(database_address, echo=False)

if not database_exists(self.engine.url):
        create_database(self.engine.url)

因此,创建一个具有模式名称的引擎,我可以使用实用程序database_exists来查看数据库是否存在,如果不存在,则使用create_database函数创建。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61866394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档