データベースの種類によっては、コードに若干の調整が加えられます。
この例では、ドライバでSQLAlchemyを使用します。接続文字列の最初の部分(接続するデータベースの種類によって異なります)を調べるには、SQLAlchemy Doc about Dialectsをチェックしてください。今、私たちは持っている
Base = declarative_base()
engine = create_engine(connection_string)
metadata = MetaData(bind=engine)
:
まず、我々は必要なモジュールが
from sqlalchemy import *
from sqlalchemy.orm import create_session
from sqlalchemy.ext.declarative import declarative_base
はその後、我々はSQLAlchemyのために必要な
dialect_part = "mysql+pymysql://"
# username is the usernmae we'll use to connect to the db, and password the corresponding password
# server_name is the name fo the server where the db is. It INCLUDES the port number (eg : 'localhost:9080')
# database is the name of the db on the server we'll work on
connection_string = dialect_part+username+":"+password+"@"+server_name+"/"+database
いくつかのより多くのセットアップを接続文字列を作成してインポートしますdbへのリンクですが、何かをする前にもう少し作業が必要です。
私たちがヒットするデータベースのテーブルに対応するクラスを作成します。このクラスは、テーブルがデータベース内のどのようになっているかに応じて自動入力されます。手動で入力することもできます。
今
class TableWellHit(Base):
__table__ = Table(name_of_the_table, metadata, autoload=True)
、テーブルと対話できるように、我々は、セッションを作成する必要があります。
session = create_session(bind=engine)
は今、私たちは、セッションを開始する必要がある、と私たちは、設定されます。 コードが使用されます。
import csv
with open("Hypersanal.csv") as csvfile:
readCSV = csv.reader(csvfile, delimiter=';')
for row in readCSV:
# print row
# I chose to push each value from the db one by one
# If you're sure there won't be any duplicates for the primary key, you can put the session.begin() before the for loop
session.begin()
# I create an element for the db
new_element = TableWellHit(field_in_table=row[field])
このためたとえば、あなたがテーブルでfiels「ユーザ名」と「パスワード」を必要としていた想像し、そして行が「ユーザー」とキーとして「パス」を含むdictionnaryが含まれています。 TableWellHit(username=row['user],password=row['pass'])
# I add the element to the table
# I choose to merge instead of add, so as to prevent duplicates, one more time
session.merge(new_element)
# Now, we commit our changes to the db
# This also closes the session
# if you put the session.begin() outside of the loop, do the same for the session.commit()
session.commit()
希望これは、あなたの質問に答えると、彼がいない場合は、ちょうど私が私が私の答えを修正することができますのでお知らせ:
要素により作成されます。
編集:MSSQLの場合
:
- インストールpymssql(pip install pymssql
)
connection_string
このSQLAlchemy pageに応じて、次の形式でなければなりません:mssql+pymssql://<username>:<password>@<freetds_name>/?charset=utf8
使用のマージを作成または値を更新することができますそれがすでに存在するかどうかによって異なります。
[SQLALchemy](http://www.sqlalchemy.org/)や[Python-sql](https://pypi.python)などのデータベースに接続できるようにするPythonモジュールをご覧ください。 .org/pypi/python-sql) – HolyDanna