Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将测试数据库用于Django';使用SQLAlchemy ORM的内置测试_Python_Mysql_Django_Database_Sqlalchemy - Fatal编程技术网

Python 将测试数据库用于Django';使用SQLAlchemy ORM的内置测试

Python 将测试数据库用于Django';使用SQLAlchemy ORM的内置测试,python,mysql,django,database,sqlalchemy,Python,Mysql,Django,Database,Sqlalchemy,我有一个在Django中运行的项目,并通过sessionmaker连接DoSQLAlchemy ORM,如下所示。它基本上使用指定的API(GET、POST、DELETE)处理http方法,并返回、发布、更新或删除db条目 从sqlalchemy导入创建引擎 从sqlalchemy.orm.session导入sessionmaker self.session=sessionmaker( bind=create_引擎('mysql+pymysql://user:pw@127.0.0.1/db')

我有一个在Django中运行的项目,并通过sessionmaker连接DoSQLAlchemy ORM,如下所示。它基本上使用指定的API(GET、POST、DELETE)处理http方法,并返回、发布、更新或删除db条目

从sqlalchemy导入创建引擎
从sqlalchemy.orm.session导入sessionmaker
self.session=sessionmaker(
bind=create_引擎('mysql+pymysql://user:pw@127.0.0.1/db')
myproject.settings
下,我正在使用默认设置,如
引擎:'django.db.backends.sqlite3',

我想通过简单地交互所有可能的方法和URI来测试API是否按照预期工作。测试是使用Django的
TestCase
类及其
客户端
模块完成的。工作非常好

我的问题: 它正在修改(特别是删除和更新)真实数据库中的列,而不是像Django的测试输出所表明的那样使用“created and destructed test_db”

我有点明白为什么(我用SQLAlchemy连接绕过Django的内置db连接),但我对如何解决这个问题感兴趣,即使用真正的测试db。

  • 目前我正在使用一个只读mysql用户进行测试,但这使我无法测试实际的POST和DELETE请求
  • 我可以尝试使用不同的db进行模拟测试,但我更喜欢另一种解决方案(每次运行测试时,我都必须从真实的db创建一个虚拟db)
PS:如果你觉得我没有提供足够的代码,请给我一个提示。但我觉得人们可能会了解我的问题,解决方案可能是将mysql集成到Django中,我还没有必要这样做。或者更准确地说,我无法在每次尝试时都进行工作

编辑:尝试将我的数据库配置为

数据库={
“默认值”:{
#“引擎”:“django.db.backends.sqlite3”,
#'NAME':os.path.join(BASE_DIR'db.sqlite3'),
'ENGINE':'django.db.backends.mysql',
'NAME':'db',
“用户”:“用户”,
“密码”:“pw”,
“主机”:“127.0.0.1”,
}
}
我得到了
django.db.utils.OperationalError:(2006,“SSL连接错误:SSL\u CTX\u set\u tmp\u dh失败”)
,我想这是因为我没有在这里使用pymysql