问题描述

在App Service中运行Python编写的定时任务,需要使用pymssql连接到数据库,但是发现使用 python.exe -m pip install --upgrade -r requirements.txt -t D:\home\site\wwwroot\pymodules。requirements.txt中包含pymssql库。安装时候出现错误消息: Failed to build pymssql.

问题答案

因为App Service上无法直接编译Python Package为Wheel文件,所以需要在本地编译好之后,上传到App Service中。使用PIP命令直接安装Wheel文件。操作步骤为:

1)从网络中下载 pymssql的wheel文件

在 https://pypi.org/project/pymssql/2.1.5/#files 找到对应 Python 版本的安装模块,如:pymssql-2.1.5-cp36-cp36m-win_amd64.whl,下载到本地,然后上传到App Service的D:\home\site\wwwroot目录。

可以直接将文件拖拽到这个目录下,操作如下:

2)在App Service的高级管理工具(Kudu)中进行安装

进入D:\home\python364x64目录,执行这个命令进行安装 pip install D:\home\site\wwwroot\pymssql-2.1.5-cp36-cp36m-win_amd64.whl

3)在Python的package文件夹中查看是否安装成功

安装成功之后,可以在这个目录D:\home\python364x64\Lib\site-packages查看到安装的包.

需要注意,执行Python的Webjob时,需要使用 .cmd 来启动 Python,指定自定义后的Python.exe的路径。

附录:pymssql 连接数据库代码

import time,datetime,dingtalk.api,pyodbc
from sqlalchemy import create_engine
import pandas as pd server="xxxx.database.windows.net"
database='xxx' #数据库名称
user="xxxx" #登陆账号
password="xxxxxxxxxxxxx" #账号密码
driver= '{ODBC Driver 17 for SQL Server}' conn=pyodbc.connect('DRIVER='+driver+';SERVER=tcp:'+server+';PORT=1433;DATABASE='+database+';UID='+user+';PWD='+ password,encoding = 'utf-8')
sqlcmd="SELECT * FROM dbo.xxxxxxxxx" #sql语句 dataset=get_df_from_db_1(sqlcmd) S_sheet =[]
S_sheet =pd.DataFrame(columns=('xxx','xxx','xxx'))
### ...
### ...
S_sheet=S_sheet.reset_index(drop=True) #存入数据库
conn_engine='mssql+pyodbc://'+user+':'+password+'@'+server+'/'+database+'?driver=ODBC Driver 17 for SQL Server'
engine = create_engine(conn_engine)
pd.io.sql.to_sql(S_sheet, 'xxx', con=engine, index=False, if_exists='append')
print('Data:%s'%len(S_sheet))
conn.close()

参考资料

pymssql 2.1.5https://pypi.org/project/pymssql/2.1.5/#files

Running Python Webjob on Azure App Services using non-default python versionhttps://azureossd.github.io/2016/12/09/running-python-webjob-on-azure-app-services-using-non-default-python-version/

最新文章

  1. 在VisualStudio 编辑器文本替换中使用正则表达式
  2. Android 笔记 AutoCompleteTextView day8
  3. Android驱动开发5-8章读书笔记
  4. django和apache交互的wsgi分析
  5. SQL-Server使用点滴(三)
  6. div隐藏与显示
  7. laravel下使用阿里云oss上传图片
  8. android:照片涂画功能实现过程及原理
  9. 解决OpenCV Error:Insufficient memory(Failed to allocate 1244164 bytes) in unknown function
  10. 批量设置AssetBundleName
  11. oracle 11g RAC ocfs2
  12. 工频相位无线同步模块PSYN5000系列在高压设备状态检测和局部放电故障定位的应用方案
  13. LeetCode之旅(20)-Power of Three
  14. python基础之 装饰器,内置函数
  15. pip install beautifulsoup4.失败
  16. 2018Action Recognition from Skeleton Data via Analogical Generalization over Qualitative Representations
  17. Westore 1.0 正式发布 - 小程序框架一个就够
  18. 关于ACtion类利用file类型取得上传文件的内容,名字和内容类型
  19. React Context(一):隐式传递数据
  20. 第一个NIOS II工程using Qsys-------Let Qsys Say Hello

热门文章

  1. php检测数组长度的函数sizeof count
  2. Dapper同时操作任意多张表的实现
  3. MySQL案例:一次单核CPU占用过高问题的处理
  4. github搜索技巧小结
  5. 2021.9.12周六PAT甲级考试复盘与总结
  6. SpringBoot系列——附件管理:整合业务表单实现上传、回显、下载
  7. 物理机burp抓虚拟机包
  8. java web 项目中web.xml 详解
  9. C# MVC 实现 ajax 跨域
  10. Python爬虫之PySpider框架