main.py
import sqlalchemy
from google.cloud import storage
import pandas as pd
import pymysql
from sqlalchemy import create_engine
connection_name = "whizlabs-admin-tut:us-central1:import-csv-admin" #TODO
db_name = "csv_db" #TODO
db_user = "root" #TODO
db_password = "WhizSql123" #TODO
# If your database is MySQL, uncomment the following two lines:
driver_name = 'mysql+pymysql'
query_string = dict({"unix_socket": "/cloudsql/{}".format(connection_name)})
def hello_world(request):
# it is mandatory initialize the storage client
client = storage.Client()
#please change the file's URI
temp = pd.read_csv('gs://whizlabs-bucket/samplecsv.csv', encoding='utf-8') #TODO
columns = list(temp.head(0))
request_json = request.get_json()
# creating connection with DB instance
db = sqlalchemy.create_engine(
sqlalchemy.engine.url.URL(
drivername=driver_name,
username=db_user,
password=db_password,
database=db_name,
query=query_string,
),
pool_size=5,
max_overflow=2,
pool_timeout=30,
pool_recycle=1800
)
try:
with db.connect() as conn:
create = "CREATE TABLE user_details (id INT NOT NULL AUTO_INCREMENT, username VARCHAR(255),email VARCHAR(255), age INT, PRIMARY KEY(id))"
conn.execute(create)
for row in temp.itertuples():
stmt = "INSERT INTO user_details (id,username,email,age) VALUES ({id},'{username}','{email}',{age})"
stmt = stmt.format(id=row.id,username=row.username,email=row.email,age=row.age)
conn.execute(stmt)
except Exception as e:
return 'Error: {}'.format(str(e))
return 'ok'
requirements.txt
google-cloud-storage==1.30.0
gcsfs==0.6.2
pandas==1.1.0
sqlalchemy
pymysql