美文网首页
python 连接sqlserver,mysql

python 连接sqlserver,mysql

作者: sbansiheng | 来源:发表于2017-10-25 10:17 被阅读0次

    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()
    

    相关文章

      网友评论

          本文标题:python 连接sqlserver,mysql

          本文链接:https://www.haomeiwen.com/subject/mnftpxtx.html