簡體   English   中英

無法使用python將數據加載到mysql中

[英]Unable to load data into mysql using python

我無法將符號列加載到mysql中。 文件名是BAJFINANCE.NS.csv

Date,Open,High,Low,Close,Adj Close,Volume   
2002-07-01,5.239740,5.540930,5.239740,5.412680,0.063393,21923  
2002-07-02,5.523440,5.537040,5.421420,5.443770,0.063757,61045  
2002-07-03,5.505950,5.545790,5.328150,5.466120,0.064019,34161  

在mysql我得到

timestamp,open,high,low,close,adj_close,volume,symbol  
2002-07-01,5.23974,5.54093,5.23974,5.41268,0.063393,21923,NULL  
2002-07-02,5.52344,5.53704,5.42142,5.44377,0.063757,61045,NULL  
2002-07-03,5.50595,5.54579,5.32815,5.46612,0.064019,34161,NULL

如何在mysql中包含符號

import mysql.connector
config = {
'user':'root',
'password':'root',
'host':'127.0.0.1',
'database':'masterfiles'
 }
 conn= mysql.connector.connect(**config)
 c=conn.cursor()

def insertRows(fileName,c):
    delimiter=r','
    file=fileName.split("/")[-1]
    symbol = file[:-7]
    if file.startswith("BAJ"):
        c.execute("""Load data local infile %s into table adjprice fields terminated by %s ignore 1 lines 
                 (timestamp,open,high,low,close,adj_close,volume,@symbol)""",(fileName,delimiter))

localExtractFilePath="/Users/dalal"

import os

for file in os.listdir(localExtractFilePath):
    if file.endswith("csv"):
        insertRows(localExtractFilePath+"/"+file,c)
        print "Loaded file "+file+" into database"
        conn.commit()
c.close()
conn.close()

我想這會做你想要的:

       c.execute("""
Load data local infile %s
    into table adjprice
    fields terminated by %s
    ignore 1 lines 
    (timestamp, open, high, low, close, adj_close, volume)
    set symbol = %s
""", (fileName, delimiter, symbol))

我建議使用查詢參數而不是修改字符串。 但是,我不能100%確定文件名和字段組件是否可以作為參數傳入。

我不確定你是如何使用你在問題中使用的導入模塊,但我會通過使用Pandas和SQLalchemy來解決這個問題。

以下是我將如何處理您的問題:

import os
import pandas as pd
from sqlalchemy import create_engine

localExtractFilePath="/Users/dalal"

config = {
'user':'root',
'password':'root',
'host':'127.0.0.1',
'database':'masterfiles'
 }


def main():
    engine = create_engine('mysql://{}:{}r@{}/{}'.format(config['user'],config['password'],config['host'],config['database']))

    for file in os.listdir(localExtractFilePath):
        if file.endswith("csv"):
            print('{} file has been found. Loading to Pandas DF'.format(file))
            #Load to a Pandas DataFrame Object (Documentation: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html)
            df = pd.read_csv(os.path.abspath(file))
            df['symbol'] = os.path.splitext(file)[0][:-7]
            print('Loading to DB....')
            #Upload DF object to SQL (Documentation: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_sql.html)
            df.to_sql(con=engine, index=False, if_exists='append')
            print('Done, on to the next file!')

if __name__ == '__main__':
    main()

希望你發現這有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM