2017-01-12 18 views
0

Pythonを使用してSQLデータベース内のテーブルの各カラムに末尾のスペースを追加します。末尾のスペースの追加は、それぞれの列の長さと一致する必要があります。Pythonを使用してcsvファイルにエクスポートする前にSQLテーブルを編集します

次に、この編集した表のデータをcsvファイルにエクスポートする必要があります。

私が使用したPythonコードを以下に示します。

Python 3.2 (r32:88445, Feb 20 2011, 21:30:00) [MSC v.1500 64 bit (AMD64)]  on win32 
Type "copyright", "credits" or "license()" for more information. 
>>> import pyodbc 
>>> import csv 
>>> conn = pyodbc.connect('DRIVER={SQL  SERVER};SERVER=*******;DATABASE=OFAC;UID=****;PWD=******') 
>>> cursor = conn.cursor() 
>>> cursor.execute('select top 10 * from ofacdata') 
<pyodbc.Cursor object at 0x00000000033727B0> 
>>> row = cursor.fetchall() 
>>> column_names = [i[0] for i in cursor.description] 
>>> with open(r'OFACDATA1.csv','w') as file: 
    csv.writer(file).writerow(column_names) 
    csv.writer(file).writerows(row) 


177 
>>> 

ここで、それぞれの列の長さに一致する列に末尾のスペースを追加する必要があります。 私のpythonコードを改善する助けてください。

Input = 

Name  Age  Country 
'qwed'  '23'  'dfdf' 
'bgbg'  '24'  'tggt' 

where Name(varchar(7)), Age(varchar(4)), Country(varchar(6)) 

Expected Output = 

    Name   Age   Country 
'qwed '  '23 '  'dfdf ' 
'bgbg '  '24 '  'tggt ' 
+0

を使用

は異なる長さを有します。 – Jeo

答えて

0

これを行う2つの方法。各列SQL

SELECT 
    cast(Name as char(7)) as "Name",cast(age as char(4)) as "Age",cast(Country as char(6)) as "Country" 
FROM ofacdata 

パンダ

import pandas as pd 
row =[['abc','25','Canada'], 
     ['efg','26','US'], 
     ['higj','30','UK']] 
df= pd.DataFrame(row) 
df.columns = ['Name', 'Age','Country'] 

format={'Name': '{0: <7}', 'Age': '{0: <4}', 'Country': '{0: <6}'} 

for key, value in format.items(): 
    df[key] = df[key].apply(value.format) 
df.to_csv('example.csv') 
+0

返事をありがとう。しかし、各列の長さが異なる場合はどうすればよいですか。 – Jeo

+0

あなたは入力と予想される出力を共有できます – Shijo

+0

入力と期待される出力を共有します。 この出力を取得し、この出力テーブルをcsvファイルにエクスポートするにはどうすればよいですか? – Jeo

関連する問題