美文网首页
利用Python连接SQL server数据库并导出到exce

利用Python连接SQL server数据库并导出到exce

作者: 42c64edf12e9 | 来源:发表于2019-08-15 14:02 被阅读0次

I would do this with pyodbc(for interacting with the db) and pandas (for manipulating data and exporting as spreadsheet).

Here's a simple example:

import pyodbc
import pandas as pd

server = '<server>.database.windows.net'
database = '<database>'
username = '<username>'
password = '<password>'
driver= '{ODBC Driver 17 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()

script = """
SELECT * FROM my_table
"""

cursor.execute(script)

columns = [desc[0] for desc in cursor.description]
data = cursor.fetchall()
df = pd.DataFrame(list(data), columns=columns)

writer = pd.ExcelWriter('foo.xlsx')
df.to_excel(writer, sheet_name='bar')
writer.save()

Read through the docs and you'll be fine.

== UPDATE ==

For more recent versions of pandas this is a better way to process the SQL query:

import pyodbc
import pandas as pd

cnxn = pyodbc.connect(< db details here >)
script = """
SELECT * FROM my_table
"""

df = pd.read_sql_query(script, cnxn)

pyodbc.connect('DRIVER=;SERVER=;DATABASE=;UID=;PWD=')
DRIVER:对应数据库版本的驱动器,SQL server 2008是“SQL Server Native Client 10.0”,
SERVER:数据库服务器名称
DATABASE:数据库名称,UID:账号,PWD:密码。

conn = pyodbc.connect('DRIVER=;SERVER=;DATABASE=;UID=;PWD=') 用此语句连接,获得连接对象。
cursor = conn.cursor() %获得游标。
cursor.execute(sql) %传递sql语句给数据库。
如:
cursor.execute('select * from table1 where n1=? and n2=?' ,var1,var2) %传递sql语句,sql语句中若含有变量,用?作为占位符代替,在后面给出变量。?个数不限,按照先后顺序赋值。 可直接跟列表,如:
var = [var1,var2]
cursor.execute('select * from table1 where n1=? and n2=?' ,var)
cursor.execute('''select *
from table1
where n1=? and n2=?''' ,var1,var2) 可以通过三引号。让sql语句可以跨行,增加sql语句可读性。

cursor.fetchone() 返回结果数据的一行,返回一个单行的数据对象,row.
row = cursor.fetchone()
row[1] % 可以类似于列表按索引号来访问具体数据
row.lie_name %也可以按 列名 来进行索引
可通过for循环遍历,获取所有数据或指定数目的数据

cursor.fetchall() 获得所有数据,返回一个list对象,每行就是一个tuple元组。
rows = cursor.fetchall()

对数据进行增加,删除,修改,等只要改变到数据库数据或属性的操作,都需要进行提交
conn.commit() % 操作提交,如果中途出错,或连接中断,则会发生数据回流,不会影响到数据库原有数据。

最后
conn.close() %关闭数据库连接。

相关文章

网友评论

      本文标题:利用Python连接SQL server数据库并导出到exce

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