PythonでMySQLデータベースに接続するにはどうすればよいですか?


1163

Pythonプログラムを使用してMySQLデータベースに接続するにはどうすればよいですか?


44
ここではほとんどの回答がMySQLdbはライブラリをインストールするに焦点を当て、私は本当にMySQLのコネクタ/ Pythonのを選ぶことをお勧めプロセスがはるかに簡単になりますのMySQL / Oracleや提供:stackoverflow.com/questions/372885/...を
氏Napik

8
OracleのConnector / Pythonを使用する際の問題は、微妙なバグやその他の統合の問題があることです。インストールは簡単ですが、私が試したすべての実際のユースケースで作業することはほぼ不可能です。したがって、なぜMySQLdbを常に推奨するのか。
Joe C.

7
@ Mr.Napik私が使っpymysqlているのは、この比較によると純粋な無料のPython だからです。
Cees Timmerman、2016年

回答:


1246

3つのステップでPython 2を使用してMYSQLに接続する

1-設定

何かを行う前に、MySQLドライバーをインストールする必要があります。PHPとは異なり、PythonではデフォルトでSQLiteドライバーのみがインストールされます。そのために最も使用されるパッケージはMySQLdbですが、easy_installを使用してインストールするのは困難です。MySQLdbはPython 2のみをサポートしています。

Windowsユーザーの場合、MySQLdbのexeを取得できます。

Linuxの場合、これはカジュアルパッケージ(python-mysqldb)です。(ダウンロードするには、コマンドラインsudo apt-get install python-mysqldbyum install MySQL-python(debianベースのディストリビューションの場合)、(rpmベースの場合)、またはdnf install python-mysql(最新のfedoraディストリビューションの場合)を使用できます。)

Macの場合、Macportを使用してMySQLdbをインストールできます。

2-使用法

インストール後、再起動します。これは必須ではありませんが、何か問題が発生した場合、この投稿の他の3つまたは4つの質問に答えることができなくなります。再起動してください。

次に、他のパッケージを使用するのと同じです:

#!/usr/bin/python
import MySQLdb

db = MySQLdb.connect(host="localhost",    # your host, usually localhost
                     user="john",         # your username
                     passwd="megajonhy",  # your password
                     db="jonhydb")        # name of the data base

# you must create a Cursor object. It will let
#  you execute all the queries you need
cur = db.cursor()

# Use all the SQL you like
cur.execute("SELECT * FROM YOUR_TABLE_NAME")

# print all the first cell of all the rows
for row in cur.fetchall():
    print row[0]

db.close()

もちろん、何千もの可能性とオプションがあります。これは非常に基本的な例です。ドキュメントを確認する必要があります。良い出発点

3-より高度な使用法

それがどのように機能するかがわかったら、SQLを手動で記述したり、Pythonオブジェクトのようにテーブルを操作したりするためにORMを使用することができます。Pythonコミュニティで最も有名なORMはSQLAlchemyです。

私はあなたにそれを使うことを強く勧めます:あなたの人生はずっと簡単になるでしょう。

最近、Pythonの世界で別の宝石、peeweeを発見しました。これは非常に軽量なORMで、セットアップが簡単で高速です。SQLAlchemyやDjangoなどの大きなツールを使用するのはやり過ぎです。

import peewee
from peewee import *

db = MySQLDatabase('jonhydb', user='john', passwd='megajonhy')

class Book(peewee.Model):
    author = peewee.CharField()
    title = peewee.TextField()

    class Meta:
        database = db

Book.create_table()
book = Book(author="me", title='Peewee is cool')
book.save()
for book in Book.filter(author="me"):
    print book.title

この例はそのまま使用できます。peewee(pip install peewee)以外は必要ありません。


46
peeweeが気に入って良かった!! MySQLのサポートと、MySQLとの統合に関するいくつかのドキュメントを追加しました。ハッキングハッピー!
コレイファー、2011年

14
これを書いている時点では、MySQLdbはPython 3をサポートしていません。sourceforgeページには「Python 3のサポートは近日提供予定」と記載されていますが、2012-10-08以降は更新されていません。Python 3にはPyMySQLoursqlがあります。
ポール2013年

8
また、次が必要とされる点に注意してください。pip install MySQL-python
ベンCrowhurst

5
この回答は、非標準ポートでの外部サーバーへの接続例で、その方法を示すのに役立ちます。localhostと言うのが通常の方法ですが、ナンセンスです。
Anthony、

3
Peeweeはデフォルトの動作を変更し、デフォルトで自動コミットを使用しなくなりました。DBドライバーの状況でさえも変わりました。質問を更新する必要がありますが、私の回答の一部は編集内容が乱用されているため、編集することはありません。
e-satis 2016年

189

これを行う1つの方法は、Python 2のみをサポートするMySQLdbを使用することです。

#!/usr/bin/python
import MySQLdb

# Connect
db = MySQLdb.connect(host="localhost",
                     user="appuser",
                     passwd="",
                     db="onco")

cursor = db.cursor()

# Execute SQL select statement
cursor.execute("SELECT * FROM location")

# Commit your changes if writing
# In this case, we are only reading data
# db.commit()

# Get the number of rows in the resultset
numrows = cursor.rowcount

# Get and display one row at a time
for x in range(0, numrows):
    row = cursor.fetchone()
    print row[0], "-->", row[1]

# Close the connection
db.close()

参照はこちら


4
データベースを変更していないので、この例ではコミットする必要がありますか?
sumanth232 2015

3
注意-このモジュールは接続時にタイムゾーンをサポートしていません
kommradHomer '26 / 02/26

共有ホスティングでは機能しません。それを言うNo module named MySQLdb。共有ホスティングでmysqlをpythonで使用するにはどうすればよいですか。代替案はありますか?
Bhavesh Gangani 2015

@BhaveshGanganiあなたはあなたのホストに連絡し、なぜ彼らがサポートするPythonライブラリを尋ねる必要があるでしょう。それらがpypiをサポートしている場合、デプロイメントが発生したときに常にパッケージをロードできます。
ジョージストッカー2015

1
興味深いことに、ドキュメントではこれがpython 2でしか機能しないと述べていますが、私にとってはpython 3でも機能するようです
lucidbrot

122

Oracle(MySQL)は、純粋なPythonコネクタをサポートするようになりました。つまり、インストールするバイナリはありません。これは単なるPythonライブラリです。「コネクタ/ Python」と呼ばれています。

http://dev.mysql.com/downloads/connector/python/


1
mysqldbを使用するよりも高速ですか?
alwbtc 2013

8
はい、そうです。また、MySQLdbよりも面倒が少なく、APIの方が私の意見では優れています。これが答えになるはずです。
Anthony、

1
時間を稼ぐには、Pythonの公式のmysqlコネクタを使用するのが最善の方法です
Anas 14

2
@ J0hnG4ltログインフォームの下にある[いいえ、ダウンロードを開始してください]をクリックするだけです(実際には必須のように見えますが、必須ではありません)。
ComFreek

6
@ComFreekすばらしい。それはどうですか?「Windowsワークフロー」の適用をやめることはできますか?パッケージ管理が存在します。
J0hnG4lt 2015年

120

MySQLdbは必要ないが、ライブラリを受け入れる場合は、MySQLのMySQL Connector / Python(http://dev.mysql.com/downloads/connector/python/)をお勧めします。

これは1つのパッケージ(約110k)、純粋なPythonであるため、システムに依存せず、インストールも非常に簡単です。ダウンロードしてダブルクリックし、使用許諾契約を確認してから実行するだけです。Xcode、MacPorts、コンパイル、再起動の必要はありません…

次に、次のように接続します。

import mysql.connector    
cnx = mysql.connector.connect(user='scott', password='tiger',
                              host='127.0.0.1',
                              database='employees')

try:
   cursor = cnx.cursor()
   cursor.execute("""
      select 3 from your_table
   """)
   result = cursor.fetchall()
   print result
finally:
    cnx.close()

2
あなたが主張するほど単純ではありません。:私はRPMをインストールしようとしたとき、私は私のRPMからの依存関係の問題(FileDigestsとPayloadIsXz)のカップルだ rpm -i mysql-connector-python-1.1.5-1.el6.noarch.rpm error: Failed dependencies: rpmlib(FileDigests) <= 4.6.0-1 is needed by mysql-connector-python-1.1.5-1.el6.noarch rpmlib(PayloadIsXz) <= 5.2-1 is needed by mysql-connector-python-1.1.5-1.el6.noarch
tatlar

2
以前はこのライブラリを好んでいましたが、PyPiでは公式にサポートされなくなりました。その後、MySQLdbに移動しました。
Steven Mercatante 2014

2
@Arms:PyPiで正式にサポートされなくなりましたか?これに関する情報源はありますか?
メッサ2015年

7
pip install mysql-connector-pythonも動作します。PyPiでサポートされなくなったと表示されている場所がわかりませんか?システムのgcc / Cコンパイラにアクセスできないため、をインストールできない場合に最適mysqldbです。
decvalts 2015

7
2016年11月7日以降、pip pip search mysql-connectorのパッケージはパッケージ名を見つけるためのmysql-connectorにすぎません。ここからの回答:stackoverflow.com/a/22829966/2048266
nommer

117

pythonからmysqlにアクセスするためだけにmysqlヘッダーをインストールすることを避けたい場合は、MySQLDbの使用を停止します。

pymysqlを使用します。これはMySQLDbが行うことのすべてを実行しますが、外部依存関係のない純粋なPythonで実装されました。これにより、すべてのオペレーティングシステムでのインストールプロセスが一貫して簡単になります。 pymysqlMySQLDbの代わりのドロップであり、私見MySQLMydbを何かに使用する理由はありません...これまで!- PTSD from installing MySQLDb on Mac OSX and *Nix systems、でもそれは私だけです。

取り付け

pip install pymysql

それだけです...あなたはプレイする準備ができています。

pymysql Githubリポジトリからの使用例

import pymysql.cursors
import pymysql

# Connect to the database
connection = pymysql.connect(host='localhost',
                             user='user',
                             password='passwd',
                             db='db',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)

try:
    with connection.cursor() as cursor:
        # Create a new record
        sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
        cursor.execute(sql, ('webmaster@python.org', 'very-secret'))

    # connection is not autocommit by default. So you must commit to save
    # your changes.
    connection.commit()

    with connection.cursor() as cursor:
        # Read a single record
        sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
        cursor.execute(sql, ('webmaster@python.org',))
        result = cursor.fetchone()
        print(result)
finally:
    connection.close()

また-既存のコードのMySQLdbを迅速かつ透過的に置き換えます

MySQLdbを使用する既存のコードがある場合は、次の単純なプロセスを使用して簡単にpymysqlに置き換えることができます。

# import MySQLdb << Remove this line and replace with:
import pymysql
pymysql.install_as_MySQLdb()

以降のMySQLdbへの参照では、透過的にpymysqlが使用されます。


3
「常に」は少し強いです... peeweeまたはsqlalchemyの何が問題になっていますか?ORMライブラリとして存在していても、それらは同じくらい便利です
OneCricketeer

4
いいえ、まったく強いとは思いません。MySQLDbまたはPyMysqlのいずれかを使用するオプションを考えると、PyMysqlを選択するのは簡単です。依存関係のない単純なpipインストールであり、MySQLDbを使用するには、OSプラットフォームにmysql開発ヘッダーファイルをインストールする必要があります。PyMysql、MySQLDb、CyMySQLなどのmysqlと通信できるモジュールをラップする必要があるため、Sqlalchemyはこれを考慮に入れていません。Peeweeは面白そうですが、確認します
OkezieE

2
@ cricket_007ピーウィーとsqlalchemly、独自のDBコネクタを実装していない、彼らはなどのMySQLdb上の層を提供
rocksportrocker

25

MySQLdbを使用してみてください。MySQLdbはPython 2のみをサポートします。

ここにページングする方法があります:http : //www.kitebird.com/articles/pydbapi.html


ページから:

# server_version.py - retrieve and display database server version

import MySQLdb

conn = MySQLdb.connect (host = "localhost",
                        user = "testuser",
                        passwd = "testpass",
                        db = "test")
cursor = conn.cursor ()
cursor.execute ("SELECT VERSION()")
row = cursor.fetchone ()
print "server version:", row[0]
cursor.close ()
conn.close ()

2
注意-このモジュールは、接続時にタイムゾーンをサポートしていません
kommradHomer

1
@kommradHomer詳しく説明していただけますか?
パイダーマン2016

1
@kommradHomer-あなた(または他の人-特にに接続する場合localhost)にとってタイムゾーンサポートは何を重要にしますか?
ウォーレン

1
@warrenいいえ、私の場合はlocalhostに接続していませんでした
kommradHomer

1
データベースに接続するためにインストールされているライブラリを検出するにはどうすればよいですか?
posfan12

18

dbドライバーとして、oursqlあります。そのリンクに記載されている理由のいくつかは、私たちのSQLの方が優れている理由を示しています。

  • oursqlには実際のパラメーター化があり、SQLとデータを完全に別々にMySQLに送信します。
  • oursqlを使用すると、テキストやバイナリデータをデータベースにストリーミングしたり、データベースからストリーミングしたりできます。すべてをクライアントにバッファリングする必要はありません。
  • oursqlは、行の遅延挿入と遅延フェッチの両方を行うことができます。
  • oursqlは、デフォルトでユニコードをサポートしています。
  • oursqlは、2.6以降(PEP 218を参照)で非推奨の警告なしに、および2.7(PEP 328を参照)で完全に失敗せずに、Python 2.4から2.7をサポートします。
  • oursqlはpython 3.xでネイティブに実行されます。

では、SQLを使用してMySQLに接続する方法は?

mysqldbとよく似ています。

import oursql

db_connection = oursql.connect(host='127.0.0.1',user='foo',passwd='foobar',db='db_name')
cur=db_connection.cursor()
cur.execute("SELECT * FROM `tbl_name`")
for row in cur.fetchall():
    print row[0]

ドキュメントチュートリアルはかなりまともです。

もちろん、ORMのSQLAlchemyは、他の回答ですでに述べたように、適切な選択です。


4
私は「Python 3.xでネイティブに実行する」を理解していません。私はそれをインストールしようとしましたが、Python 3互換の印刷呼び出しも使用していないため、setup.pyが爆破します。実際に試してみるまでは素晴らしい音でした。
オタクコード

15

端末で次のコマンドを実行して、mysqlコネクタをインストールします。

pip install mysql-connector-python

そして、これをPythonエディターで実行してMySQLに接続します。

import mysql.connector

mydb = mysql.connector.connect(
      host="localhost",
      user="yusername",
      passwd="password",
      database="database_name"
)

MySQLコマンドを実行するためのサンプル(Pythonエディターで):

mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))")    
mycursor.execute("SHOW TABLES")

mycursor.execute("INSERT INTO customers (name, address) VALUES ('John', 'Highway 21')")    
mydb.commit() # Use this command after insert or update

その他のコマンド:https : //www.w3schools.com/python/python_mysql_getstarted.asp


これに答えてもらえますか?それだけに関連してmysql-connectorいます。 stackoverflow.com/questions/59405740/...

1
すでに何人かの人があなたの質問にそこで答えました。mydb.commit()テーブルに値を挿入した後に実行するのを忘れた
Sherzod

13

SqlAlchemy


SQLAlchemyは、アプリケーション開発者にSQLの全機能と柔軟性を提供するPython SQLツールキットおよびオブジェクトリレーショナルマッパーです。SQLAlchemyは、効率的で高性能なデータベースアクセス用に設計された、よく知られているエンタープライズレベルの永続性パターンの完全なスイートを提供します。

取り付け

pip install sqlalchemy

RAWクエリ

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, scoped_session

engine = create_engine("mysql://<user_name>:<password>@<host_name>/<db_name>")
session_obj = sessionmaker(bind=engine)
session = scoped_session(session_obj)

# insert into database
session.execute("insert into person values(2, 'random_name')")
session.flush()
session.commit()

ORMウェイ

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, scoped_session

Base = declarative_base()
engine = create_engine("mysql://<user_name>:<password>@<host_name>/<db_name>")
session_obj = sessionmaker(bind=engine)
session = scoped_session(session_obj)

# Bind the engine to the metadata of the Base class so that the
# declaratives can be accessed through a DBSession instance
Base.metadata.bind = engine

class Person(Base):
    __tablename__ = 'person'
    # Here we define columns for the table person
    # Notice that each column is also a normal Python instance attribute.
    id = Column(Integer, primary_key=True)
    name = Column(String(250), nullable=False)

# insert into database
person_obj = Person(id=12, name="name")
session.add(person_obj)
session.flush()
session.commit()

11

上記のすべての回答にもかかわらず、特定のデータベースに直接接続したくない場合、たとえば、データベースをまだ作成したい(!)場合はconnection.select_db(database)、以下に示すように、を使用できます。

import pymysql.cursors
connection = pymysql.connect(host='localhost',
                         user='mahdi',
                         password='mahdi',
                         charset='utf8mb4',
                         cursorclass=pymysql.cursors.DictCursor)
cursor = connection.cursor()
cursor.execute("CREATE DATABASE IF NOT EXISTS "+database)
connection.select_db(database)
sql_create = "CREATE TABLE IF NOT EXISTS "+tablename+(timestamp DATETIME NOT NULL PRIMARY KEY)"
cursor.execute(sql_create)
connection.commit()
cursor.close()

8

MySQLdbは簡単な方法です。接続を介してSQLクエリを実行できます。限目。

私の好みの方法は、Pythonicでもあり、代わりに強力なSQLAlchemyを使用することです。これはクエリ関連のチュートリアルであり、SQLALchemyのORM機能に関するチュートリアルです。


1
リンクは死んでいます、それを調べて正しいリンクで更新できますか?
Naveen Vijay 14

6

Python3.6の場合、pymysqlとmysqlclientの2つのドライバーが見つかりました。私はそれらの間のパフォーマンスをテストし、結果を得ました:mysqlclientはより高速です。

以下は私のテストプロセスです(経過時間を分析するためにpython lib profilehooksをインストールする必要があります:

生のSQL: select * from FOO;

mysqlターミナルですぐに実行します。 46410 rows in set (0.10 sec)

pymysql(2.4s):

from profilehooks import profile
import pymysql.cursors
import pymysql
connection = pymysql.connect(host='localhost', user='root', db='foo')
c = connection.cursor()

@profile(immediate=True)
def read_by_pymysql():
    c.execute("select * from FOO;")
    res = c.fetchall()

read_by_pymysql()

ここにpymysqlプロファイルがあります: ここに画像の説明を入力してください


mysqlclient(0.4秒)

from profilehooks import profile
import MySQLdb

connection = MySQLdb.connect(host='localhost', user='root', db='foo')
c = connection.cursor()

@profile(immediate=True)
def read_by_mysqlclient():
    c.execute("select * from FOO;")
    res = c.fetchall()

read_by_mysqlclient()

mysqlclientプロファイルは次のとおりです。 ここに画像の説明を入力してください

ですから、mysqlclientはpymysqlよりもはるかに速いようです


6

一部の人がこれを重複としてマークし、他の誰かの回答をコピーしていることに腹を立てるかもしれませんが、私は本当に Napik氏の回答の側面を強調したいと思います。これを見逃したため、全国的なWebサイトのダウンタイム(9分)を引き起こしました。誰かがこの情報を共有しただけなら、私はそれを防ぐことができたでしょう!

これが彼のコードです:

import mysql.connector    
cnx = mysql.connector.connect(user='scott', password='tiger',
                              host='127.0.0.1',
                              database='employees')
try:
   cursor = cnx.cursor()
   cursor.execute("""select 3 from your_table""")
   result = cursor.fetchall()
   print(result)
finally:
    cnx.close()

ここで重要なのは、Try and Final句です。これは、に接続可能ALWAYSは関係なく、コードのカーソル/ SQLStatementの部分に何が起こるかの、閉じられます。アクティブな接続が多数あると、DBLoadNoCPUが急上昇し、DBサーバーがクラッシュする可能性があります。

この警告がサーバーと最終的にはジョブの節約に役立つことを願っています!:D


6

PythonからMySQLに接続する最良の方法は、MySQL Connector / Pythonを使用することです。これは、Pythonを使用するためのMySQLの公式Oracleドライバであり、Python 3とPython 2の両方で動作するためです。

MySQLに接続するには、以下の手順に従ってください

  1. ピップを使用してコネクタをインストールする

    pip install mysql-connector-python

または、https://dev.mysql.com/downloads/connector/python/からインストーラーをダウンロードできます

  1. connect()mysqlコネクタpythonのメソッドを使用してMySQLに接続し、必要な引数をconnect()メソッドに渡します。つまり、ホスト、ユーザー名、パスワード、データベース名。

  2. メソッドcursorによって返された接続オブジェクトからオブジェクトを作成connect()し、SQLクエリを実行します。

  3. 作業が完了したら、接続を閉じます。

import mysql.connector
 from mysql.connector import Error
 try:
     conn = mysql.connector.connect(host='hostname',
                         database='db',
                         user='root',
                         password='passcode')
     if conn.is_connected():
       cursor = conn.cursor()
       cursor.execute("select database();")
       record = cursor.fetchall()
       print ("You're connected to - ", record)
 except Error as e :
    print ("Print your error msg", e)
 finally:
    #closing database connection.
    if(conn.is_connected()):
       cursor.close()
       conn.close()

リファレンス-https://pynative.com/python-mysql-database-connection/

MySQLコネクタPythonの重要なAPI

  • DML操作の場合- cursor.execute()cursor.executemany()を使用してクエリを実行します。この使用後connection.commit()、変更をDBに永続化します

  • 使用する-データをフェッチするために、cursor.execute()クエリを実行するとcursor.fetchall()cursor.fetchone()cursor.fetchmany(SIZE)データをフェッチします


あなたは*に接続しています...
ジョンフォーブス

5

上記の答えを変更しただけです。このコマンドを実行してmysqlをpythonにインストールするだけです

sudo yum install MySQL-python
sudo apt-get install MySQL-python

覚えて!大文字と小文字が区別されます。


MySQL-pythonをyum installでインストールしました。インストールは完了しましたが、MySQLdbモジュールをインポートできません。そのようなモジュールはありません。なぜそうなのでしょうか?
user3527975 2016年

「上記の答え」と言ったときにどの答えを意味するのかは明確ではありません。答えはそれ自体で完全なものにしてください。他の回答を参照したい場合は、特定の回答にリンクしてください。
Flimm

5

他の人が特定のバージョンのpythonのみをサポートするため、mysqlclientが最適です。

 pip install mysqlclient

コード例

    import mysql.connector
    import _mysql
    db=_mysql.connect("127.0.0.1","root","umer","sys")
    #db=_mysql.connect(host,user,password,db)
    # Example of how to insert new values:
    db.query("""INSERT INTO table1 VALUES ('01', 'myname')""")
    db.store_result()
    db.query("SELECT * FROM new1.table1 ;") 
    #new1 is scheme table1 is table mysql 
    res= db.store_result()
    for i in range(res.num_rows()):
        print(result.fetch_row())

https://github.com/PyMySQL/mysqlclient-pythonを参照してください


しかし、Pythonの3のための最速のソリューションを提案する+1、mysql.connectorとは、_mysql(第二の選択肢は、マニュアルに従って動作するはずですが)インポートエラーの両方を与えます。import MySQLdb動作し、その後MySQLdb.connect...
スザナ

3

また、見とる嵐を。これは、クエリを記述せずにSQLエントリを簡単に編集および作成できるシンプルなSQLマッピングツールです。

以下に簡単な例を示します。

from storm.locals import *

# User will be the mapped object; you have to create the table before mapping it
class User(object):
        __storm_table__ = "user" # table name
        ID = Int(primary=True) #field ID
        name= Unicode() # field name

database = create_database("mysql://root:password@localhost:3306/databaseName")
store = Store(database)

user = User()
user.name = u"Mark"

print str(user.ID) # None

store.add(user)  
store.flush() # ID is AUTO_INCREMENT

print str(user.ID) # 1 (ID)

store.commit() # commit all changes to the database

オブジェクトを検索して使用するには:

michael = store.find(User, User.name == u"Michael").one()
print str(user.ID) # 10

主キーで検索:

print store.get(User, 1).name #Mark

詳細については、チュートリアルを参照してください


2

これはMysql DB接続です

from flask import Flask, render_template, request
from flask_mysqldb import MySQL

app = Flask(__name__)


app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'root'
app.config['MYSQL_DB'] = 'MyDB'

mysql = MySQL(app)


@app.route('/', methods=['GET', 'POST']) 
def index():
    if request.method == "POST":
        details = request.form
        cur = mysql.connection.cursor()
        cur.execute ("_Your query_")
        mysql.connection.commit()
        cur.close()
        return 'success'
    return render_template('index.html')


if __name__ == '__main__':
    app.run()

1

最初にドライバーをインストールする

pip install MySQL-python   

次に、基本的なコードは次のようになります。

#!/usr/bin/python
import MySQLdb

try:
    db = MySQLdb.connect(host="localhost",      # db server, can be a remote one 
                     db="mydb"                  # database
                     user="mydb",               # username
                     passwd="mydb123",          # password for this username
                     )        

    # Create a Cursor object
    cur = db.cursor()

    # Create a query string. It can contain variables
    query_string = "SELECT * FROM MY_TABLE"

    # Execute the query
    cur.execute(query_string)

    # Get all the rows present the database
    for each_row in cur.fetchall():
        print each_row

    # Close the connection
    db.close()
except Exception, e:
    print 'Error ', e 

1

この方法でpythonコードをmysqlに接続できます。

import MySQLdb
db = MySQLdb.connect(host="localhost",
                 user="appuser",
                 passwd="",
                 db="onco")

cursor = db.cursor()

1

最初にドライバーをインストールします(Ubuntu)

  • sudo apt-get install python-pip

  • sudo pip install -U pip

  • sudo apt-get install python-dev libmysqlclient-dev

  • sudo apt-get install MySQL-python

MySQLデータベース接続コード

import MySQLdb
conn = MySQLdb.connect (host = "localhost",user = "root",passwd = "pass",db = "dbname")
cursor = conn.cursor ()
cursor.execute ("SELECT VERSION()")
row = cursor.fetchone ()
print "server version:", row[0]
cursor.close ()
conn.close ()

0

Python 3.3の場合

CyMySQL https://github.com/nakagami/CyMySQL

Windows 7にpipがインストールされていますが、pip install cymysql

(あなたはcythonを必要としません)迅速で無痛


3
SOで新しい質問を作成し、ここへのリンクを使用してコメントすることができます。
Lazik 2013年

-1

まず、https: //dev.mysql.com/downloads/connector/python/からpython-mysqlコネクタをインストールします

Pythonコンソールで次のように入力します。

pip install mysql-connector-python-rf
import mysql.connector

1
質問は少し広すぎましたが、この回答は少し狭すぎるようです(少なくともモジュールのインストールとインポートだけでは機能しないという意味で)。シェルとpythonが単一のコードブロックに混在しているようで、何も説明されていないか、何がどこで何をしているのかについてのヒントがあります。
Ondrej K.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.