为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:winodws10
【CPU】:x64
【问题描述】
使用 dmPython包可以正常连接数据库 但是无法使用 sqlalchemy连接 报错 “创建socket连接失败”
使用的均是文档中的实例代码
本地环境:
python 3.8
dmPython 2.5.5
sqlalchemy 2.0.23
sqlalchemy-dm2.0.0
# coding: utf-8
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from Product import Product
def main():
#dialect 是SQLAlchemy用来与各种类型的DBAPI和数据库通信的系统。
conn_url = 'dm+dmPython://SYSDBA:1qaz@WSX123@127.0.0.1:5236'
#创建Engine对象
engine = create_engine(conn_url)
#创建DBSession对象
DBSession = sessionmaker(bind=engine)
fun_select_all(DBSession)
# 插入
fun_insert(DBSession)
fun_select_all(DBSession)
# 更新
fun_update(DBSession)
fun_select_all(DBSession)
# 删除
fun_delete(DBSession)
fun_select_all(DBSession)
def fun_select_all(DBSession):
# 创建Session
session = DBSession()
# 查询所有的
list_product = session.query(Product).all()
print('查询所有结果:')
for product in list_product:
print(product.NAME, product.AUTHOR, product.PUBLISHER )
print('')
session.close()
def fun_insert(DBSession):
# 创建Session
session = DBSession()
new_product = Product()
new_product.NAME = '水浒传'
new_product.AUTHOR = '施耐庵,罗贯中'
new_product.PUBLISHER = '中华书局'
new_product.PUBLISHTIME = '2005-4-1'
new_product.PRODUCTNO = '9787101046137'
new_product.SATETYSTOCKLEVEL = '10'
new_product.ORIGINALPRICE = '19'
new_product.NOWPRICE = '14.3'
new_product.DISCOUNT = '7.5'
new_product.DESCRIPTION = ''' 《水浒传》是宋江起义故事在民间长期流传基础上产生出来的,吸收了民间文学的营养。'''
new_product.PHOTO = ''
new_product.TYPE = '16'
new_product.PAPERTOTAL = '922'
new_product.WORDTOTAL = '912000'
new_product.SELLSTARTTIME = '2006-03-20'
new_product.SELLENDTIME = ''
session.add(new_product)
session.commit()
print('插入成功')
session.close()
def fun_update(DBSession):
# 创建Session
session = DBSession()
product = session.query(Product).filter(Product.NAME == '水浒传').one()
product.NAME = '水浒'
session.commit()
print('更新成功')
session.close()
def fun_delete(DBSession):
# 创建Session
session = DBSession()
session.query(Product).filter(Product.NAME == '水浒').delete()
session.commit()
print('删除成功')
session.close()
if __name__ == '__main__':
main()
127.0.0.1换成实际的IP