当前位置: 首页 > 面试题库 >

SQLAlchemy从create()打印原始SQL

经和歌
2023-03-14
问题内容

我正在尝试使用SQLAlchemy的Pylons,但我很喜欢,只有一件事,是否可以打印出在执行之前CREATE TABLE生成的原始SQL数据Table().create()


问题答案:

from sqlalchemy.schema import CreateTable

print(CreateTable(table))

如果使用声明性语法:

print(CreateTable(Model.__table__))

更新:

由于我已经接受了答案,并且klenwell答案中有重要信息,因此我也会在此处添加它。

我需要获取原始表sql才能为一些现有模型设置测试。这是我基于Antoine的答案作为概念证明为SQLAlchemy 0.7.4创建的成功单元测试:

from sqlalchemy import create_engine
from sqlalchemy.schema import CreateTable
from model import Foo

sql_url = "sqlite:///:memory:"    
db_engine = create_engine(sql_url)

table_sql = CreateTable(Foo.table).compile(db_engine)
self.assertTrue("CREATE TABLE foos" in str(table_sql))

您可以通过使用引擎进行编译来获取特定数据库(MySQL,Postgresql等)的SQL。

print(CreateTable(Model.__table__).compile(engine))

更新2:

@jackotonye在注释中添加了一种无需引擎即可完成此操作的方法。

print(CreateTable(Model.__table__).compile(dialect=postgresql.dialect()))


 类似资料:
  • 问题内容: 我试图使用sqlalchemy执行原始sql查询,想知道什么是“正确”的方法。 我的查询如下(目前): 我不喜欢的是字符串格式和缺少任何参数处理(在music_volume中用引号引起来的:-D)。 我试图遵循以下答案: 如何在SQLAlchemy- flask应用程序中执行原始SQL 应用我阅读的内容后,我的代码段如下所示: 但是我收到错误,指出mv和ml无法识别参数。 如果我将代码

  • 问题内容: 我正在将express.js与EJS模板一起使用,并且正在尝试执行以下操作: 但它打印此: 如何打印“ html安全”字符串? 问题答案: 您应该在各处使用html代码,并且仅在需要动态数据的地方使用EJS标签。例: 为了专门回答您的问题,您可以使用输出未 转义的 HTML数据。

  • 问题内容: 我正在尝试找到一种从变量以原始格式打印字符串的方法。例如,如果我将环境变量添加到Windows的路径中(看起来像),我知道我可以做到: 但是我不能在变量前面放一个…。例如: 显然只是尝试打印。 我也知道 但这种回报 一样 所以我想知道是否有任何优雅的方法可以使持有该路径的变量打印为RAW,同时仍使用test?如果只是这样会很好 但不是 问题答案: 我遇到了类似的问题,偶然发现了这个问题

  • 我的编程任务是打印一个包含10个随机整数的数组,然后有4行不同的输出(每个偶数元素、逆序等) 代码本身运行良好(据我所知),但我遇到的一个问题是,我必须设置一个系统。出来println(“”);在每一行之前,为了使每一行看起来正确。 最初,当我拥有it系统时。出来println(“[第1行]……”)*用于循环*系统。出来print(“arr[i],”)*close for loop*它将每个整数打

  • 我们希望打印到连接在apache运行的POS打印机上。由于应用程序的设计和部署,打印应该从服务器上完成(它应该检测订单并发送到不同的打印机和不同格式的打印...账单,厨房订单,等等...)。出于这个原因和其他原因(例如,从iPad访问应用程序),我们放弃了像QZ-Print applet这样的选项,并需要直接在服务器端打印。 提前谢了。

  • 问题内容: 我需要在Python中将标准输入切换为非缓冲模式,以便可以从中读取单个字符。我设法使其正常工作,但现在标准输出已损坏:以某种方式在换行符之后发出了一些空格字符,第一行为零,第二行为3,第三行为6,依此类推: 操作系统是Ubuntu Linux 12.04,64位版本,Python版本是3.2.3。 我如何摆脱这种行为? 以下是我使用的代码: 问题答案: 看起来您只在换行,而没有回车。更