我在代码中使用了sqlalchemy,每次必须使用它的某些功能时,我都需要先导入然后再使用它。 import sqlalchemy
不能解决我的问题,from sql sqlalchemy import *
也不能解决我的代码-
def populateLoaderData(dataFrame):
try:
sqlalchemy_conn_string="postgresql://{0}:{1}@{2}:{3}/{4}".format(dbuser,password,endpoint,port,database)
engine=create_engine(sqlalchemy_conn_string)
coltype = {'eccid': String,
'ims_org_id': String,
'host_name': String,
'packages': JSONB,
'environment': String,
'topology': String,
'topology_type': String,
'instance_name': String,
'customer_name': String,
'build': Integer,
'build_version': String,
'rds_db': String,
'rds_endpoint': String,
'hosted_location': String,
'tenant_id': String,
'apache_version': String,
'jdk_version': String,
'os_type': String,
'provisioning_package': String}
dataFrame.to_sql('temp_data', con = engine, schema ='loader',dtype=coltype, if_exists = 'replace', index = False, chunksize = 500)
print("Inserted records in temp_data")
except:
print("Error while inserting data into loader table")
raise
return
为此,我需要编写三个import语句
from sqlalchemy import create_engine
from sqlalchemy.types import *
from sqlalchemy.dialects.postgresql import JSONB
如果缺少上述任何import语句,都会给我导入错误,我认为这不是一个好的解决方案。是否有更好的方法一次性导入所有sqlalchemy库?
答案 0 :(得分:0)
出现进口分割的概念是有原因的。它减少了您的依赖链,并且不使用不需要的东西,从而减少了内存使用率,等等。同样,在保持系统清洁的情况下,您不需要编译/安装每个依赖项,因为您的程序不需要这样做。因此,分别导入所有内容都是正确的。
答案 1 :(得分:0)
这里有个人喜好元素。 SQLAlchemy文档的作者似乎更喜欢
from sqlalchemy import create_engine, text, ...
我更喜欢
import sqlalchemy as sa
,然后在我叫sa.create_engine
时使用。但是,我认为大多数人都会同意
from sqlalchemy import *
不推荐。