python 连接sqlserver,mysql

python连接sqlserver有很多包可以选择,有pyodbc和pymssql,这里把代码都贴出来,但是希望大家用pyodbc,因为在实践中跑几百万的数据量跑了一天的时候连接会断,google Stack Overflow之后也没有很好的解决方案,最后用pyodbc就解决了该问题(同事也有类似经历)。

pyodbc

建立连接,建立游标,通过游标执行语句,拿到结果。

import pyodbc
conn = pyodbc.connect('Driver={SQL Server};Server=192.168.0.180;Database=databasename;uid=username;pwd=password')
cursor = conn.cursor()
sql = "select table.a,table.b from table"
cursor.execute(sql)

如果想一次拿回所有结果
result=cursor.fetchall()
但最好还是把游标的结果当成一个迭代器然后用循环一个个取
for i in cursor:print(i[0])

如果是update的话,最好新建一个连接再新建一个游标(查询可以同一个游标执行,新的查询代替旧的查询语句)。

conn1 = pyodbc.connect('Driver={SQL Server};Server=192.168.0.180;Database=databasename;uid=username;pwd=password')
cursor1 = conn1.cursor()
cursor1.execute("UPDATE table.b SET b=? WHERE a=?", (b_value, a_value))
conn1.commit()

pymssql

这里也贴出来pymssql的代码

import pymssql
conn= pymssql.connect(host='192.168.0.180', user=username, password=password, database=databasename)
cursor= conn.cursor()
cursor = conn.cursor()
sql = "select   table.a,table.b from table"
cursor.execute(sql)
#update
conn1= pymssql.connect(host='192.168.0.180', user=username, password=password, database=databasename)
cursor1= conn1.cursor()  
cursor1.execute("UPDATE table.b SET b= %s WHERE a=%s",(b_value, a_value))
conn1.commit()

mysql

import MySQLdb.cursors
conn = MySQLdb.connect('192.168.0.180', user=username, password=password, database=databasename, charset='utf8',
                       cursorclass=MySQLdb.cursors.SSCursor)
cursor = conn.cursor()
sql ="select table.a,table.b from table"
cursor.execute(sql)
#update
conn1 = MySQLdb.connect('192.168.0.180', user=username, password=password, database=databasename, charset='utf8',
                       cursorclass=MySQLdb.cursors.SSCursor)
cursor1 = conn1.cursor()
cursor1.execute(" update table.b set b=%s where a=%s", (b_value, a_value))
conn1.commit()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • 语 句 功 能 数据操作 SELECT——从数据库表中检索数据行和列INSERT——向数据库表添加新数据行DELE...
    戰敭阅读 5,122评论 0 53
  • 第八章 数据查询和选择 ||| 第十章 获取GIS数据列表和描述信息 我们将在本章中介绍以下几个案例: 游标对象(...
    muyan阅读 21,375评论 5 21
  • 保持每天成长不易,做到每天的成长率更是不易了。那么在我看来应该怎么提高成长率呢?结合以前所学习的内容,我觉得应该...
    lanlana阅读 160评论 0 0
  • 我本打算找本短篇小说来做一个快速阅读,不料却被《富士山禁恋》的传奇所吸引。直到2012年,已有超过1100...
    清黑色阅读 3,452评论 2 2