繁体   English   中英

如何使用数据框将python sql输出写入CSV

[英]How to write python sql output into CSV using a dataframe

导入模块

import pyodbc
import pandas as pd
import csv

创建与MICROSOFT SQL Server的连接

msconn = pyodbc.connect(driver='{SQL Server}',
                        server='SERVER',
                        database='DATABASE', 
                        trusted_msconnection='yes')                                                                                                                
cursor = msconn.cursor()

创建包含SQL语句的变量

SCRIPT = "SELECT * FROM TABLE"

打印数据

cursor.execute(SCRIPT)
cursor.commit
for row in cursor:
    print (row)

将所有带有列名的行写入CSV ---需要帮助

大熊猫

由于熊猫支持直接从RDBMS导入,名称为read_sql,因此您无需手动编写。

from sqlalchemy import create_engine
import pandas as pd

engine = create_engine('mssql+pyodbc://user:pass@mydsn')
df = pd.read_sql(sql='SELECT * FROM ...', con=engine)

正确的工具:odo

来自odo docs

将CSV文件加载到数据库中已解决。 这个问题已经很好地解决了。 与其每次都需要滚动自己的加载器并浪费计算资源,不如在选择的数据库中使用本机加载器。

反之亦然。

from odo import odo

odo('mssql+pyodbc://user:pass@mydsn::tablename','myfile.csv')

@ e4c5的答案很棒,因为它比for loop + cursor要快-我会使用保存结果设置为CSV来扩展它:

...
pd.read_sql(sql='SELECT * FROM TABLE', con=msconn) \
  .to_csv('/path/to/file.csv', index=False)

如果要读取所有行(不指定WHERE子句):

pd.read_sql_table('TABLE', con=msconn).to_csv('/path/to/file.csv', index=False)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM