相关疑难解决方法(0)

如何从SQLAlchemy表达式获取原始的,已编译的SQL查询?

我有一个SQLAlchemy查询对象,想要获取已编译的SQL语句的文本,并绑定其所有参数(例如,没有%s或其他变量等待语句编译器或MySQLdb方言引擎等绑定).

调用str()查询会显示如下内容:

SELECT id WHERE date_added <= %s AND date_added >= %s ORDER BY count DESC
Run Code Online (Sandbox Code Playgroud)

我试过查询query._params,但它是一个空的字典.我使用这个sqlalchemy.ext.compiler.compiles装饰器的例子编写了我自己的编译器,但即使是那里的语句仍然有%s我想要的数据.

我无法弄清楚何时混入我的参数来创建查询; 在检查查询对象时,它们总是一个空字典(尽管查询执行正常,引擎在打开echo日志时将其打印出来).

我开始得到SQLAlchemy不希望我知道底层查询的消息,因为它打破了表达式API接口所有不同DB-API的一般性质.我不介意在我发现它之前是否执行了查询; 我只是想知道!

python mysql sql sqlalchemy

87
推荐指数
8
解决办法
6万
查看次数

从csv文件生成插入SQL语句

我需要将一个csv文件导入Firebird,我花了几个小时尝试一些工具,但没有一个适合我的需求.

主要的问题是我一直在尝试的所有工具,如EMS数据导入Firebird数据向导,我希望我的csv文件包含我的表所需的所有信息.

我需要在insert语句中编写一些自定义SQL,例如,我有一个带有城市名称的cvs文件,但由于我的数据库已经有另一个表中的所有城市(规范化),我需要在插入中编写一个子选择查找城市并写入其ID的语句,我也有一个存储过程来创建GUID.

我的Insert语句是这样的:

INSERT INTO PERSON (ID, NAME, CITY_ID) VALUES((SELECT NEW_GUID FROM CREATE_GUID), :NAME, (SELECT CITY_ID FROM CITY WHERE NAME = :CITY_NAME)
Run Code Online (Sandbox Code Playgroud)

我知道写一个应用程序来做这个很容易,但我不喜欢重新发明轮子,我确信有一些工具可以做到这一点.

你们能给我一些建议吗?

sql csv firebird insert

53
推荐指数
5
解决办法
8万
查看次数

标签 统计

sql ×2

csv ×1

firebird ×1

insert ×1

mysql ×1

python ×1

sqlalchemy ×1