파이썬에서 MySQL 데이터베이스에 어떻게 연결합니까?


1162

파이썬 프로그램을 사용하여 MySQL 데이터베이스에 어떻게 연결합니까?


44
여기에서 대부분의 답변은 MySQLdb 라이브러리 설치에 중점을 둡니다. MySQL / Oracle에서 제공하는 MySQL Connector / Python을 선택하면 프로세스가 훨씬 간단 해집니다. stackoverflow.com/questions/372885/…
Mr. Napik

8
Oracle의 Connector / Python을 사용할 때의 문제점은 미묘한 버그 및 기타 통합 문제가 있다는 것입니다. 설치하기는 쉽지만 실제로 시도한 모든 실제 사용 사례에서 작동하는 것은 거의 불가능합니다. 따라서 항상 MySQLdb를 추천하는 이유는 무엇입니까?
Joe C.

7
@ Mr.Napik 이 비교pymysql 에 따르면 순수한 무료 파이썬이기 때문에 사용 하고 있습니다.
Cees Timmerman

답변:


1246

세 단계로 Python 2로 MYSQL에 연결

1-설정

작업을 수행하기 전에 MySQL 드라이버를 설치해야합니다. PHP와 달리 Python에는 기본적으로 SQLite 드라이버 만 설치됩니다. 가장 많이 사용되는 패키지는 MySQLdb 이지만 easy_install을 사용하여 설치하기는 어렵습니다. MySQLdb는 Python 2 만 지원합니다.

Windows 사용자 의 경우 MySQLdbexe를 얻을 수 있습니다 .

Linux의 경우 이는 일반적인 패키지 (python-mysqldb)입니다. (당신은 사용할 수 있습니다 sudo apt-get install python-mysqldb) 데비안 (기반의 배포판을 yum install MySQL-pythonRPM 기반)에 대한 (또는 dnf install python-mysql다운로드에 명령 줄에서) 현대 페도라 배포판에 대한 (.)

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-고급 사용법

작동 방식을 알고 나면 ORM 을 사용하여 SQL을 수동으로 작성하지 않고 테이블을 Python 객체처럼 조작 할 수 있습니다. 파이썬 커뮤니티에서 가장 유명한 ORM은 SQLAlchemy 입니다.

나는 당신이 그것을 사용하는 것이 좋습니다 : 당신의 인생은 훨씬 쉬워 질 것입니다.

나는 최근 파이썬 세계에서 또 다른 보석 인 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

이 예제는 기본적으로 작동합니다. 까마귀 ( pip install peewee) 이외의 다른 것은 필요하지 않습니다.


46
까마귀처럼 기뻐요 !! MySQL에 대한 지원 과 통합에 대한 일부 문서 를 추가 했습니다. 행복한 해킹!
coleifer

14
참고로, MySQLdb는 Python 3을 지원하지 않습니다. sourceforge 페이지에 "Python 3 지원 예정"이라는 메시지가 표시되지만 2012-10-08 이후로 업데이트되지 않았습니다. 파이썬 3에는 PyMySQLoursql이 있습니다.
paul

8
또한 다음 사항이 필요합니다.pip install MySQL-python
Ben Crowhurst

5
이 답변은 비표준 포트의 외부 서버에 연결하는 방법을 보여주는 예제로 더 유용합니다. localhost를 말하는 것이 일반적인 방법이라고 말도 안됩니다.
Anthony

3
Peewee는 기본 동작을 변경했으며 더 이상 기본적으로 자동 커밋을 사용하지 않습니다. DB 드라이버 상황조차도 바뀌 었습니다. 질문을 업데이트해야하지만 일부 답변에 대한 수정 사항이 남용되므로 더 이상 수정하지 않습니다.
e-satis

189

다음 은 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

3
조심 -이 모듈이 연결에서 시간대 지원이 없습니다
kommradHomer

공유 호스팅에서 작동하지 않습니다. 그 말 No module named MySQLdb. 공유 호스팅에서 파이썬과 함께 mysql을 어떻게 사용할 수 있습니까? 어떤 대안?
Bhavesh Gangani

@BhaveshGangani 당신은 호스트에게 연락해서 왜 그들이 파이썬 라이브러리를 지원하는지 물어봐야합니다. 이들이 pypi를 지원하면 배포가 발생할 때 항상 패키지를로드 할 수 있습니다.
George Stocker

1
흥미롭게도 문서가 파이썬 2에서만 작동한다고 말하지만 파이썬 3에서는 작동합니다.
lucidbrot

122

Oracle (MySQL)은 이제 순수 Python 커넥터를 지원합니다. 이것은 설치할 바이너리가 없다는 것을 의미합니다. 단지 파이썬 라이브러리 일뿐입니다. "커넥터 / 파이썬"이라고합니다.

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


1
이것이 mysqldb를 사용하는 것보다 빠릅니까?
alwbtc

8
그렇습니다. 또한 MySQLdb보다 번거롭지 않으며 API가 더 좋습니다. 이것이 답이되어야합니다.
Anthony

1
파이썬의 공식 mysql 커넥터를 사용하는 것이 시간을 얻는 가장 좋은 방법입니다
Anas

2
@ J0hnG4lt 로그인 양식 (실제로 필수이지만 보이지는 않습니다) 아래의 "고마워요, 다운로드를 시작하십시오"를 클릭하면됩니다.
ComFreek

6
@ComFreek 좋아. 어떻게 더 나아지나요? "Windows 워크 플로"적용을 중단 할 수 있습니까? 패키지 관리가 존재합니다.
J0hnG4lt

120

MySQLdb가 필요하지 않지만 라이브러리를 허용하려면 MySQL의 MySQL Connector / Python ( http://dev.mysql.com/downloads/connector/python/)을 매우 권장 합니다.

하나의 패키지 (약 110k), 순수한 파이썬이므로 시스템에 독립적이며 설치가 간단합니다. 라이센스 계약을 다운로드하고 두 번 클릭 한 후 확인하면됩니다. 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

2
@Arms : 더 이상 공식적으로 PyPi에서 지원되지 않습니까? 이것에 대한 소스가 있습니까?
Messa

7
pip install mysql-connector-python작동합니다. 더 이상 PyPi에서 지원되지 않는다고 표시되지 않습니까? 시스템의 gcc / C 컴파일러에 액세스 할 수 없어서 설치할 수없는 경우에 mysqldb좋습니다.
9

7
2016 년 11 월 7 일 현재 pip 패키지는 mysql-connector이며 pip search mysql-connector패키지 이름을 찾습니다. 여기에서 대답하십시오 : stackoverflow.com/a/22829966/2048266
nommer

117

파이썬에서 mysql에 액세스하기 위해 mysql 헤더를 설치하지 않으려면 MySQLDb 사용을 중지하십시오.

pymysql을 사용하십시오 . MySQLDb의 모든 기능을 수행하지만 외부 의존성이없는 Python으로 순수하게 구현되었습니다 . 따라서 모든 운영 체제의 설치 프로세스가 일관되고 쉬워집니다. pymysqlMySQLDb와 IMHO의 대체품으로 MySQLDb를 사용할 이유가 없습니다. - 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
"항상"은 약간 강하다 ... 까 wee 나 sqlalchemy에 무슨 문제가 있습니까? 이들이 ORM 라이브러리로 존재하더라도 여전히 유용합니다
OneCricketeer

4
아니요, 전혀 강력하지 않다고 생각합니다. MySQLDb 또는 PyMysql을 사용할 수있는 옵션이 주어지면 PyMysql을 선택하는 것은 의존성이없는 간단한 pip 설치이기 때문에 더 쉬운 방법은 아니지만 MySQLDb를 사용하려면 OS 플랫폼에 mysql 개발 헤더 파일을 설치해야 작동합니다. 여전히 등 PyMysql, MySQLDb, CyMySQL 같은 mysql을 이야기 할 수있는 모듈을 주위에 포장해야하기 때문에 SQLAlchemy의이에 요인을하지 않는 Peewee 흥미로운하지만, 내가 그 체크 아웃 것 같습니다
OkezieE

2
@ cricket_007 peewee와 sqlalchemly는 자체 DB 커넥터를 구현하지 않고 MySQLdb 등의 계층을 제공합니다.
rockportrocker

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 좀 더 자세히 설명해 주시겠습니까?
Pyderman

1
@kommradHomer-시간대 지원은 무엇입니까 (또는 다른 사람-특히 연결할 때 localhost)?
warren

1
@warren 아니오, 필자의 경우 로컬 호스트를 연결하지 않았습니다
kommradHomer

1
데이터베이스에 연결하기 위해 설치된 라이브러리를 어떻게 감지합니까?
posfan12

18

db 드라이버에는 oursql있습니다 . 해당 링크에 나열된 몇 가지 이유는 oursql이 더 나은 이유를 말합니다.

  • oursql은 실제 매개 변수화를 통해 SQL과 데이터를 MySQL로 완전히 개별적으로 보냅니다.
  • oursql을 사용하면 클라이언트에서 모든 것을 버퍼링 할 필요없이 텍스트 또는 이진 데이터를 데이터베이스로 스트리밍하고 데이터베이스에서 스트리밍 할 수 있습니다.
  • oursql은 느리게 행을 삽입하고 느리게 행을 가져올 수 있습니다.
  • oursql은 기본적으로 유니 코드를 지원합니다.
  • oursql은 2.6 이상에서 더 이상 사용되지 않는 경고 (PEP 218 참조)와 2.7에서 완전히 실패하지 않고 (PEP 328 참조) python 2.4 ~ 2.7을 지원합니다.
  • oursql은 python 3.x에서 기본적으로 실행됩니다.

그렇다면 oursql로 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
'파이썬 3.x에서 기본적으로 실행됩니다'를 이해하지 못합니다. 방금 설치하려고했지만 setup.py는 Python 3 호환 인쇄 호출을 사용하지 않기 때문에 폭탄이 터집니다. 실제로 시도 할 때까지 훌륭하게 들렸습니다.
otakucode

15

터미널에서 다음 명령을 실행하여 mysql 커넥터를 설치하십시오.

pip install mysql-connector-python

그리고 파이썬 편집기에서 이것을 실행하여 MySQL에 연결하십시오.

import mysql.connector

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

Python 명령에서 MySQL 명령을 실행하기위한 샘플 :

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 툴킷 및 Object Relational Mapper입니다. SQLAlchemy는 효율적인 고성능 데이터베이스 액세스를 위해 설계된 잘 알려진 엔터프라이즈 레벨 지속성 패턴의 전체 제품군을 단순하고 Pythonic 도메인 언어로 조정합니다.

설치

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 쿼리를 실행할 수 있습니다. 기간.

파이썬으로도 선호되는 방법은 강력한 SQLAlchemy를 대신 사용하는 것입니다. 다음은 쿼리 관련 학습서 이며 SQLALchemy의 ORM 기능에 대한 학습서입니다.


1
링크가 작동하지 않습니다. 링크를보고 올바른 링크로 업데이트 할 수 있습니까?
Naveen Vijay

6

Python3.6의 경우 pymysql과 mysqlclient라는 두 가지 드라이버를 발견했습니다. 나는 그들 사이의 성능을 테스트하고 결과를 얻었습니다 : mysqlclient가 더 빠릅니다.

아래는 내 테스트 프로세스입니다 (시간 경과를 분석하기 위해 python lib profilehooks를 설치해야합니다 :

원시 SQL : select * from FOO;

mysql 터미널에서 즉시 실행하십시오. 46410 rows in set (0.10 sec)

pymysql (2.4 초) :

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의 응답의 측면을 강조 표시합니다. 이것을 놓 쳤기 때문에 전국 웹 사이트 가동 중지 시간 (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 finally 절입니다. 이를 통해 코드의 커서 / sql 문 부분에서 발생하는 상황에 관계없이 항상 연결을 닫을 수 있습니다. 활성 연결이 많으면 DBLoadNoCPU가 스파이크되어 DB 서버가 충돌 할 수 있습니다.

이 경고가 서버와 궁극적으로 작업을 저장하는 데 도움이되기를 바랍니다. :디


6

Python에서 MySQL에 연결하는 가장 좋은 방법은 MySQL 커넥터 / Python을 사용하는 것입니다. MySQL 커넥터는 Python 작업을위한 MySQL 용 공식 Oracle 드라이버이며 Python 3 및 Python 2와 함께 작동하기 때문입니다.

아래 언급 된 단계에 따라 MySQL을 연결하십시오.

  1. pip를 사용하여 커넥터 설치

    pip install mysql-connector-python

또는 https://dev.mysql.com/downloads/connector/python/ 에서 설치 관리자를 다운로드 할 수 있습니다

  1. connect()mysql 커넥터 파이썬의 메소드를 사용 하여 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 Connector Python의 중요한 API

  • DML 작업의 경우 cursor.execute()cursor.executemany()을 사용 하여 쿼리를 실행 하십시오 . 이 사용 후 connection.commit()DB에 대한 변경 사항을 유지하기 위해

  • 사용 - 데이터를 가져 오기 위해 cursor.execute()쿼리를 실행하고 cursor.fetchall(), cursor.fetchone(), cursor.fetchmany(SIZE)데이터를 가져 오기 위해


당신은 연결되어 있습니다 ...
John Forbes

5

위의 답변에서 수정되었습니다. 이 명령을 실행하여 파이썬 용 mysql을 설치하십시오.

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

생각해 내다! 대소 문자를 구분합니다.


yum install을 통해 MySQL-python을 설치했습니다. 설치가 완료되었지만 MySQLdb 모듈을 가져올 수 없습니다. 그런 모듈이 없다고 말합니다. 왜 그렇게 생각하십니까?
user3527975

"답변 위에"라고 말할 때 어떤 대답을 의미하는지는 확실하지 않습니다. 답변 자체를 완성하십시오. 다른 답변을 참조하려면 특정 답변으로 연결하십시오.
Flimm

5

다른 사람들이 특정 버전의 파이썬에 대해서만 지원을 제공하므로 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를


그러나 파이썬 3. 가장 빠른 해결책을 제안 +1, mysql.connector_mysql(두 번째 옵션은 문서에 따라 작동해야하지만) 가져 오기 오류를 모두 제공합니다. import MySQLdb작동 한 다음MySQLdb.connect...
Suzana

3

또한 Storm을 살펴보십시오 . 쿼리를 작성하지 않고도 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

이런 식으로 파이썬 코드를 mysql에 연결할 수 있습니다.

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

cursor = db.cursor()

1

먼저 드라이버 설치 (우분투)

  • sudo apt-get 설치 python-pip

  • sudo pip install -U pip

  • sudo apt-get 설치 python-dev libmysqlclient-dev

  • sudo apt-get 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

파이썬 3.3

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

Windows 7에 pip가 설치되어 있습니다. pip install cymysql

(사이 톤이 필요하지 않음) 빠르고 고통없는


3
SO에 대한 새 질문을 작성하고 여기에 대한 링크로 주석을 달 수 있습니다.
Lazik

-1

먼저 https://dev.mysql.com/downloads/connector/python/ 에서 python-mysql 커넥터를 설치 하십시오.

Python 콘솔에서 다음을 입력하십시오.

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

1
질문은 너무 광범위했지만이 답변은 너무 좁아 보입니다 (적어도 모듈을 설치하고 가져 오는 것만으로는 의미가 없습니다). 또한 셸과 파이썬이 단일 코드 블록에 섞여있는 것으로 보이며 어떤 설명이나 힌트도없이 어디로 가고 무엇을하는지 알 수 있습니다.
Ondrej K.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.