Python代码调用数据库SQL server系列

7 篇文章 0 订阅

一、连接数据库 

#连接数据库
from sqlalchemy import create_engine
#格式
#engine = create_engine("mssql+pyodbc://登录名:密码@服务器名称/数据库名?driver=SQL+Server+Native+Client+10.0", encoding="utf8", echo=True)

#案例
engine1 = create_engine("mssql+pyodbc://ssd:sa123@192.168.12.106/NetworkData?driver=SQL+Server+Native+Client+10.0", encoding="utf8", echo=True)

二、在数据库中创建一个新表(备注:只要不是从数据库中读取或插入数据,其他在数据库中使用的语句都可以用execute函数,比如删除表中数据、添加表)


sql1 = """CREATE TABLE datanm1 (
                                    time  datetime,
                                    data  float ,        
                                                    )""" #不能只用一个双引号
engine1.execute(sql1)

三、在新表中插入数据

#data为dataframe数据类型,每列数据类型要与表定义的数据类型相同
data.to_sql(name='datanm1',con=engine1,if_exists='append',index=False)
#append表示如果表存在,则在表中添加数据
#replace表示如果表存在,则替换表数据

四、取出表中的数据

#取出的数据也为dataframe数据类型
d=sql.read_sql("SELECT pv,pt FROM " + c + " where SensorID = '" + a_index + "' ORDER BY pt ", engine)

五、循环读取多个表中的数据

date=pd.date_range('2018/7/15','2018/7/16', freq='D')
a_index= '01130621007F41006' #某一个地点的sensorID
e = pd.DataFrame()
for j in date:
    time = j.strftime("%Y%m%d")
    c=  'HIS'+time
    d1=sql.read_sql("select count(1) from sys.objects where name = '" + c + "' ", engine).iloc[0,0] #查询库中是否有某个表名的表
    if d1 == 1:
        d=sql.read_sql("SELECT pv,pt FROM " + c + " where SensorID = '" + a_index + "' ORDER BY pt ", engine)
        e=e.append(d)

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值