我正在使用sqlalchemy和create_engine连接到mysql,构建一个数据库并开始填充相关数据。
编辑,序言,需要首先创建有关的数据库。为此,我执行以下命令
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”命令,但最终收到了以下错误
line 3516, in _escape_identifier
value = value.replace(self.escape_quote, self.escape_to_quote)
AttributeError: 'NoneType' object has no attribute 'replace'我将错误跟踪到一个帖子,其中指出在python 3中使用以下命令时会发生这种情况。
engine.execute("USE dbname")在execute命令中还需要包括哪些内容才能访问mysql数据库而不引发错误。
发布于 2020-05-18 09:49:58
您不应该使用USE命令,而是应该在create_engine连接url中指定要连接到的数据库,即:
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
发布于 2020-05-19 07:56:15
想出该怎么做,
按照Match的建议,我研究了SQLAlchemy及其创建模式的能力。
找到以下代码
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函数创建。
https://stackoverflow.com/questions/61866394
复制相似问题