পাইথনে আমি কীভাবে মাইএসকিউএল ডাটাবেসে কানেক্ট করব?


1161

অজগর প্রোগ্রামটি ব্যবহার করে আমি কীভাবে একটি মাইএসকিউএল ডাটাবেসের সাথে সংযুক্ত করব?


44
: এখান সর্বাধিক উত্তর MySQLdb গ্রন্থাগার ইনস্টল উপর ফোকাস, আমি সত্যিই মাইএসকিউএল সংযোগকারী জন্য অসংখ্য কর্মী সুপারিশ করবে / পাইথন মাইএসকিউএল / ওরাকল, যা প্রক্রিয়া অনেক সহজ করে তোলে দ্বারা উপলব্ধ stackoverflow.com/questions/372885/...
জনাব Napik

8
ওরাকলের সংযোগকারী / পাইথন ব্যবহার করে সমস্যাটি হ'ল এতে সূক্ষ্ম বাগ এবং অন্যান্য ইন্টিগ্রেশন সমস্যা রয়েছে। এটি ইনস্টল করা সহজ, তবে আমি বাস্তবের যে সমস্ত বাস্তব ব্যবহারের ক্ষেত্রে এটি ব্যবহার করেছিলাম তার জন্য কাজ করা প্রায় অসম্ভব। আমি কেন সবসময় মাইএসকিউএলডিবি সুপারিশ করি।
জো সি।

7
@ মিঃ নেপিক আমি ব্যবহার করছি pymysqlকারণ এটি তুলনা অনুযায়ী খাঁটি মুক্ত পাইথন ।
সিস টিমারম্যান

উত্তর:


1245

পাইথন 2 এর সাথে তিনটি ধাপে এমওয়াইএসকিউএলে সংযুক্ত হচ্ছে

1 - সেট

কিছু করার আগে আপনার অবশ্যই একটি মাইএসকিউএল ড্রাইভার ইনস্টল করতে হবে। পিএইচপি থেকে পৃথক, পাইথনের সাথে কেবলমাত্র এসকিউএল ড্রাইভারই ডিফল্টরূপে ইনস্টল করা হয়। এটি করতে সর্বাধিক ব্যবহৃত প্যাকেজটি মাইএসকিউএলডিবি তবে ইজি_ইনস্টল ব্যবহার করে এটি ইনস্টল করা শক্ত। দয়া করে নোট করুন মাইএসকিউএলডিবি কেবল পাইথন 2 সমর্থন করে।

উইন্ডোজ ব্যবহারকারীর জন্য, আপনি মাইএসকিউএলডিবি'র একটি এক্সেস পেতে পারেন ।

লিনাক্সের জন্য এটি একটি নৈমিত্তিক প্যাকেজ (পাইথন-মাইসকিএলডিবি)। (আপনি sudo apt-get install python-mysqldb(ডেবিয়ান ভিত্তিক ডিস্ট্রোসের জন্য), yum install MySQL-python(আরপিএম-ভিত্তিক), বা dnf install python-mysql(আধুনিক ফেডোরা ডিসট্রোর জন্য) ডাউনলোড করতে কমান্ড লাইনে ব্যবহার করতে পারেন)

ম্যাকের জন্য, আপনি ম্যাকপোর্ট ব্যবহার করে মাইএসকিউএলডিবি ইনস্টল করতে পারেন ।

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 - আরও উন্নত ব্যবহার

এটি কীভাবে কাজ করে তা জানার পরে আপনি নিজেই এসকিউএল লেখা এড়ানোর জন্য কোনও ওআরএম ব্যবহার করতে এবং আপনার টেবিলগুলিকে পাইথন অবজেক্ট হিসাবে ম্যানিপুলেট করতে চাইতে পারেন । পাইথন সম্প্রদায়ের সর্বাধিক বিখ্যাত ওআরএম হলেন এসকিউএলএলকেমি

আমি আপনাকে দৃ strongly়ভাবে এটি ব্যবহার করার পরামর্শ দিচ্ছি: আপনার জীবন আরও সহজ হতে চলেছে।

আমি পাইথন ওয়ার্ল্ডে সম্প্রতি আরেকটি রত্ন আবিষ্কার করেছি: পিউই । এটি খুব হালকা ওআরএম, এরপরে ব্যবহারের জন্য সেটআপ করা সত্যিই সহজ এবং দ্রুত। এটি আমার ছোট ছোট প্রকল্পগুলির জন্য বা একা অ্যাপ্লিকেশনগুলির জন্য দাঁড়ায়, যেখানে এসকিউএএলএলচেমি বা জ্যাঙ্গোর মতো বড় বড় সরঞ্জামগুলি ব্যবহার করা অতিরিক্ত দক্ষতা অর্জন করে:

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
খুশির মতো তোমার উঁকি দেওয়া !! আমি মাইএসকিউএল-এর পাশাপাশি এর সাথে সংহত করার জন্য কিছু ডকুমেন্টেশন সমর্থন যোগ করেছি । শুভ হ্যাকিং!
কোলেফার

14
দ্রষ্টব্য, এটি লেখার মতো হিসাবে, মাইএসকিউএলডিবি পাইথন 3 সমর্থন করে না সোর্সফোজের পৃষ্ঠাটি "পাইথন 3 সমর্থন শীঘ্রই আসছে" তবে 2012-10-08 থেকে এটি আপডেট করা হয়নি। পাইথন 3 এর জন্য পাইমাইএসকিউএল এবং আওয়ারকিউএল রয়েছে
পল

8
এছাড়াও নিম্নলিখিতটি নোট করুন:pip install MySQL-python
বেন ক্রোহার্স্ট

5
এটি কীভাবে করবেন তা দেখানোর জন্য একটি উত্তর-মানক পোর্টের একটি বহিরাগত সার্ভারের উদাহরণ সংযোগের সাথে এই উত্তরটি আরও সহায়ক হবে। লোকালহোস্ট বলাই হচ্ছে এটি করার স্বাভাবিক উপায় বাজে কথা।
অ্যান্থনি

3
পিউইয়ের ডিফল্ট আচরণ পরিবর্তন হয়েছে এবং আর ডিফল্টরূপে স্বতঃআকমিট ব্যবহার করে না। এমনকি ডিবি ড্রাইভারের পরিস্থিতিও এখন বদলে গেছে। প্রশ্নটির আপডেট হওয়া দরকার, তবে যেহেতু আমার কয়েকটি উত্তরগুলিতে সম্পাদনাগুলি অপব্যবহার করা হয়েছে, তাই আমি সেগুলি আর সম্পাদনা করি না।
ই সন্তুষ্ট

189

এটি করার একটি উপায় এখানে মাইএসকিউএলডিবি ব্যবহার করে যা কেবল পাইথন 2 সমর্থন করে:

#!/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। আমি কীভাবে শেয়ার্ড হোস্টিংয়ে অজগরটির সাথে মাইএসকিএল ব্যবহার করতে পারি। কোন বিকল্প?
ভবেশ গঙ্গানী

@ ভাভেশগঙ্গানী আপনাকে আপনার হোস্টের সাথে যোগাযোগ করতে হবে এবং পাইথন লাইব্রেরি কেন তারা সমর্থন করে তা জানতে হবে। যদি তারা পাইপিকে সমর্থন করে তবে আপনার স্থাপনা যখন ঘটে তখন আপনি সর্বদা প্যাকেজটি লোড করতে পারেন।
জর্জি স্টকার 12

1
মজার বিষয় যদিও
ডকসগুলি

122

ওরাকল (মাইএসকিউএল) এখন একটি খাঁটি পাইথন সংযোগকারী সমর্থন করে। তার অর্থ ইনস্টল করার জন্য কোনও বাইনারি নেই: এটি কেবল একটি পাইথন লাইব্রেরি। একে "সংযোগকারী / পাইথন" বলা হয়।

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


1
এটি কি মাইএসকিএলডিবি ব্যবহারের চেয়ে দ্রুত?
alwbtc

8
হ্যাঁ, তাই এছাড়াও, এটি MySQLdb এর চেয়ে কম ঝামেলা এবং API আমার মতে ভাল। এই উত্তর হওয়া উচিত।
অ্যান্টনি

1
পাইথনের অফিশিয়াল মাইএসকিএল সংযোজকটি সময় জয়ের সেরা উপায়
আনাস

2
@ J0hnG4lt আপনি লগইন ফর্মের নীচে "ধন্যবাদ না, কেবল আমার ডাউনলোড শুরু করুন" এ ক্লিক করতে পারেন (যা আসলে বাধ্যতামূলক বলে মনে হয়, তবে তা নয়)।
কমফ্রিচ

6
পছন্দ করুন কীভাবে ভাল? আমরা কি "উইন্ডোজ ওয়ার্কফ্লো" প্রয়োগ বন্ধ করতে পারি? প্যাকেজ পরিচালনা বিদ্যমান।
J0hnG4lt

119

আপনার যদি মাইএসকিউএলডিবি না লাগে তবে যে কোনও গ্রন্থাগার গ্রহণ করা হয় তবে আমি মাইএসকিউএল থেকে মাইএসকিউএল সংযোগকারী / পাইথনকে খুব সুপারিশ করব: http://dev.mysql.com/downloads/connector/python/

এটি একটি প্যাকেজ (প্রায় ১১০ কিলোমিটার) খাঁটি পাইথন, সুতরাং এটি সিস্টেম স্বতন্ত্র এবং ইনস্টল করার জন্য মৃত সহজ। আপনি কেবল ডাউনলোড করুন, ডাবল-ক্লিক করুন, লাইসেন্স চুক্তিটি নিশ্চিত করুন এবং যান। এক্সকোড, ম্যাকপোর্টস, সংকলন, পুনরায় আরম্ভ করার দরকার নেই ...

তারপরে আপনি যেমন সংযুক্ত হন:

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
আপনার দাবির মতো সহজ নয় simple আমি যখন আরপিএমটি ইনস্টল করার চেষ্টা করলাম তখন আমার আরপিএম থেকে বেশ কয়েকটি নির্ভরশীলতা সংক্রান্ত সমস্যা (ফাইলডিজ্টস এবং পেইলডআইএসএক্সজেড) পেয়েছি: 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
ট্যাটলার

2
আমি এই লাইব্রেরিটিকে প্রাধান্য দিয়েছি তবে এটি আর পিপিআই-তে সরকারীভাবে সমর্থিত নয়। আমি তখন থেকে মাইএসকিউএলডিবিতে চলে এসেছি।
স্টিভেন মার্কাটান্টে

2
@ আর্মস: পিপিআই-তে আর সরকারীভাবে সমর্থন নেই? আপনি কি এই জন্য কোন উত্স আছে?
মেসা

7
pip install mysql-connector-pythonকাজ করবে। আমি দেখতে পাচ্ছি না যেখানে এটি পিপিআই-তে আর সমর্থন করে না? দুর্দান্ত যদি আপনার সিস্টেমে জিসিসি / সি সংকলকগুলির অ্যাক্সেস না থাকে এবং তাই ইনস্টল করতে পারবেন না mysqldb
অগস্ট

7
Nov নভেম্বর, ২০১ of পর্যন্ত, pip search mysql-connectorপ্যাকেজের নামটি খুঁজতে পাইপের জন্য প্যাকেজটি কেবল মাইএসকিএল-সংযোজক । উত্তর এখান থেকে: stackoverflow.com/a/22829966/2048266
nommer

117

মাইএসকিউএলডিবি ব্যবহার বন্ধ করুন যদি আপনি পাইথন থেকে মাইএসকিএল অ্যাক্সেস করতে মাইএসকিএল শিরোনাম ইনস্টল করা এড়াতে চান।

পাইমিস্কেল ব্যবহার করুন । এটি মাইএসকিউএলডিবি যা করে তা সবই করে, তবে এটি বহিরাগত নির্ভরতা সহ পাইথনে খাঁটিভাবে প্রয়োগ করা হয়েছিল । এটি সমস্ত অপারেটিং সিস্টেমে ইনস্টলেশন প্রক্রিয়াটিকে সামঞ্জস্যপূর্ণ এবং সহজ করে তোলে। pymysqlমাইএসকিউএলডিবি এবং আইএমএইচও-র প্রতিস্থাপনের ড্রপ হ'ল কোনও কিছুর জন্য মাইএসকিউএলডিবি ব্যবহার করার কোনও কারণ নেই ... সর্বদা! - PTSD from installing MySQLDb on Mac OSX and *Nix systems, তবে আমি শুধু

স্থাপন

pip install pymysql

এটাই ... আপনি খেলতে প্রস্তুত।

পাইমিস্কেল গিথুব রেপো ব্যবহারের উদাহরণ Example

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()

এছাড়াও - দ্রুত এবং স্বচ্ছভাবে বিদ্যমান কোডটিতে মাইএসকিউএলডিবি প্রতিস্থাপন করুন

আপনার যদি বিদ্যমান কোড রয়েছে যা মাইএসকিউএলডিবি ব্যবহার করে, আপনি সহজেই এই সাধারণ প্রক্রিয়াটি ব্যবহার করে এটি পিমিসকিএল দিয়ে সহজেই প্রতিস্থাপন করতে পারেন:

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

মাইএসকিউএলডিবি-র পরবর্তী সমস্ত রেফারেন্সগুলি স্বচ্ছভাবে পাইমিস্কেল ব্যবহার করবে।


3
"সর্বদা" একটু শক্তিশালী ... খোসা বা স্ক্ল্যাচলেমিতে কী ভুল?
ওআরএম

4
না, আমি মোটেও শক্তিশালী বলে মনে করি না। মাইএসকিউএলডিবি বা পাইমাইএসকিএল উভয়ই ব্যবহারের অপশন দেওয়া হয়েছে বলে আমি মনে করি পাইমাইএসকিএল নির্বাচন করা কোনও মস্তিষ্কের নয় কারণ এটি কোনও নির্ভরতা ছাড়াই একটি সাধারণ পাইপ ইনস্টল, যখন মাইএসকিউএলডিবি এটির জন্য আপনার ওএস প্ল্যাটফর্মের জন্য মাইএসকিএল বিকাশ শিরোনাম ফাইলগুলি ইনস্টল করা প্রয়োজন। স্ক্ল্যাচেমি এটির মধ্যে ফ্যাক্টর করে না কারণ এটি এখনও মডিউলের চারপাশে মোড়ানো প্রয়োজন যা পিআইএমএসকিএল, মাইএসকিউএলডিবি, সাইমাইএসকিউএল ইত্যাদির মতো মাইএসকিএল-এর সাথে কথা বলতে পারে, যদিও পিউই আকর্ষণীয় দেখায়, আমি এটি পরীক্ষা করে
দেখব

2
@ ক্রিকেট_০০7 পিল এবং স্ক্ল্যাচচেমলি তাদের নিজস্ব ডিবি সংযোজক বাস্তবায়ন করবেন না, তারা মাইএসকিউএলডিবি ইত্যাদির উপরে একটি স্তর সরবরাহ করে
রকসপোর্টারকার

25

মাইএসকিউএলডিবি ব্যবহার করার চেষ্টা করুন । মাইএসকিউএলডিবি কেবল পাইথন 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 আপনি কি বিস্তারিত বর্ণনা করতে পারেন?
পাইডারম্যান

1
@ কোমরাদহোমর - টাইমজোন আপনার (বা অন্যদের - বিশেষত সংযোগ করার সময় localhost) সমর্থন করে কি ?
ওয়ারেন

1
@ ওয়ারেন না, আমি আমার ক্ষেত্রে লোকালহোস্টের সাথে সংযোগ দিচ্ছিলাম না
কম্মরাদহোমার

1
কোন ডাটাবেসে সংযোগের জন্য কোন লাইব্রেরি ইনস্টল করা আছে তা আমি কীভাবে সনাক্ত করব?
posfan12

18

একজন ডিবি ড্রাইভার হিসাবে, আওয়ারএসএলও রয়েছে । এই লিঙ্কটিতে তালিকাভুক্ত কয়েকটি কারণ যা বলে যে আওয়ারকিএল আরও ভাল:

  • আওয়ারকিএল এর সত্যিকারের প্যারামিটারাইজেশন রয়েছে, এসকিউএল এবং ডেটা সম্পূর্ণ পৃথকভাবে মাইএসকিউএলে প্রেরণ করছে।
  • আওয়ারকিএল, ক্লায়েন্টে সমস্ত কিছু বাফার করার পরিবর্তে পাঠ্য বা বাইনারি ডেটাবেসকে ডাটাবেসে প্রবাহিত করতে এবং ডাটাবেস থেকে স্ট্রিম করার অনুমতি দেয়।
  • আওয়ারকিএল উভয়ই অলসভাবে সারি সন্নিবেশ করতে পারে এবং অলসভাবে সারিগুলি আনতে পারে।
  • আওয়ারকিএল-র ডিফল্টর সাথে ইউনিকোড সমর্থন রয়েছে।
  • আওয়ার এসকিএল ২.6+ (পিইপি 218 দেখুন) এবং 2.7 এ সম্পূর্ণ ব্যর্থ না হয়ে (পিইপি 328 দেখুন) অজগর 2.4 এর মাধ্যমে 2.7 এর মাধ্যমে 2.7 পর্যন্ত সমর্থন করে।
  • আওয়ারকিএল স্থানীয়ভাবে অজগর 3.x এ চলে

আওয়ারকিএল এর সাথে কীভাবে মাইএসকিএল সংযোগ করবেন?

মাইএসকিএলডিবির সাথে খুব মিল:

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]

ডকুমেন্টেশনে টিউটোরিয়াল সুন্দর শালীন হয়।

এবং অবশ্যই ওআরএম এসকিউএলএলচেমির জন্য একটি ভাল পছন্দ, যেমনটি ইতিমধ্যে অন্যান্য উত্তরে উল্লিখিত হয়েছে।


4
আমি 'পাইথন 3.x নেটিভভাবে রান' বুঝতে পারি না। আমি কেবল এটি ইনস্টল করার চেষ্টা করেছি এবং সেটআপ.পি বোম্ব আউট করেছি কারণ এটি পাইথন 3 সুসংগত প্রিন্ট কলগুলিও ব্যবহার করে না। আমি সত্যিই এটি চেষ্টা না করা অবধি দুর্দান্ত লাগছিল।
ওটকাকোড

15

Mysql সংযোগকারী ইনস্টল করতে আপনার টার্মিনালে এই কমান্ডটি চালান:

pip install mysql-connector-python

এবং মাইএসকিউএলে কানেক্ট করতে আপনার পাইথন সম্পাদকটিতে এটি চালান:

import mysql.connector

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

মাইএসকিউএল কমান্ডগুলি কার্যকর করার জন্য নমুনাগুলি (আপনার পাইথন এডিয়ারে):

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-connectorstackoverflow.com/questions/59405740/...

1
কিছু লোক ইতিমধ্যে সেখানে আপনার প্রশ্নের উত্তর দিয়েছে। আপনি কেবল mydb.commit()সারণিতে মান সন্নিবেশ করার পরে দৌড়াতে ভুলে গেছেন
শেরজোদ

13

SqlAlchemy


এসকিউএলএলকেমি পাইথন এসকিউএল টুলকিট এবং অবজেক্ট রিলেশনাল ম্যাপার যা অ্যাপ্লিকেশন বিকাশকারীকে এসকিউএল এর সম্পূর্ণ ক্ষমতা এবং নমনীয়তা দেয়। এসকিউএএলএলচেমি দক্ষ এবং উচ্চ-কার্য সম্পাদনকারী ডেটাবেস অ্যাক্সেসের জন্য ডিজাইন করা একটি সাধারণ এবং পাইথোনিক ডোমেন ভাষায় অভিযোজিত সুপরিচিত এন্টারপ্রাইজ-স্তরের দৃistence়তা ধরণের একটি সম্পূর্ণ স্যুট সরবরাহ করে।

স্থাপন

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

মাইএসকিউএলডিবি হ'ল সোজা উপায়। আপনি কোনও সংযোগের জন্য এসকিউএল কোয়েরিগুলি কার্যকর করতে পারেন। সময়কাল।

আমার পছন্দের উপায়টি যা অজগর তাও এর পরিবর্তে শক্তিশালী এসকিউএএলএলচেমি ব্যবহার করা। এখানে কোয়েরি সম্পর্কিত টিউটোরিয়াল, এবং এখানে এসকিউএএলএলচেমির ওআরএম ক্ষমতা সম্পর্কিত একটি টিউটোরিয়াল রয়েছে।


1
লিঙ্কগুলি মারা গেছে, আপনি কি এটি সন্ধান করে সঠিক লিঙ্কটি দিয়ে আপডেট করতে পারবেন?
নবীন বিজয়

6

পাইথন ৩..6-এর জন্য আমি দুটি ড্রাইভার পেয়েছি: পাইমিস্কেল এবং মাইএসকিএলক্লিয়েন্ট। আমি তাদের মধ্যে পারফরম্যান্স পরীক্ষা করেছি এবং ফলাফল পেয়েছি: মাইএসকিএলসিলেট দ্রুত হয়।

নীচে আমার পরীক্ষার প্রক্রিয়াটি রয়েছে (সময় অতিবাহিত বিশ্লেষণ করতে পাইথন লাইব প্রোফাইল বইগুলি ইনস্টল করা দরকার :

কাঁচা এসকিএল: select * from FOO;

তাত্ক্ষণিকভাবে মাইএসকিএল টার্মিনালে চালানো: 46410 rows in set (0.10 sec)

পিমিস্কিউএল (২.৪ এস):

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()

এখানে পাইমস্কুল প্রোফাইল: এখানে চিত্র বর্ণনা লিখুন


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 প্রোফাইল: এখানে চিত্র বর্ণনা লিখুন

সুতরাং, এটি মনে হয় যে মাইএসকিএলসিলেটটি পাইমস্কিলের চেয়ে অনেক দ্রুত


6

পাইথন থেকে মাইএসকিউএলে কানেক্ট করার সর্বোত্তম উপায় হ'ল মাইএসকিউএল সংযোগকারী / পাইথন ব্যবহার করা কারণ এটি পাইথনের সাথে কাজ করার জন্য মাইএসকিউএলের অফিসিয়াল ওરેકল ড্রাইভার এবং এটি পাইথন 3 এবং পাইথন 2 উভয়ের সাথেই কাজ করে।

মাইএসকিউএল সংযোগ করতে নীচে উল্লিখিত পদক্ষেপগুলি অনুসরণ করুন

  1. পাইপ ব্যবহার করে সংযোগকারী ইনস্টল করুন

    pip install mysql-connector-python

অথবা আপনি https://dev.mysql.com/downloads/connector/python/ থেকে ইনস্টলারটি ডাউনলোড করতে পারেন

  1. connect()মাইএসকিউএল এর সাথে সংযোগ স্থাপনের জন্য মাইএসকিএল সংযোগকারী পাইথনের পদ্ধতিটি ব্যবহার করুন connect()। যেমন হোস্ট, ব্যবহারকারীর নাম, পাসওয়ার্ড এবং ডাটাবেসের নাম।

  2. এসকিউএল কোয়েরিগুলি কার্যকর করতে পদ্ধতিতে cursorফিরে আসা সংযোগ অবজেক্ট থেকে অবজেক্ট তৈরি করুন connect()

  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-connication/

মাইএসকিউএল সংযোগকারী পাইথনের গুরুত্বপূর্ণ এপিআই

  • ডিএমএল ক্রিয়াকলাপগুলির জন্য - ব্যবহার করুন cursor.execute()এবং ক্যোরি cursor.executemany()চালাতে এবং এই ব্যবহারের পরে connection.commit()আপনার পরিবর্তনগুলিকে ডিবিতে অব্যাহত রাখার জন্য

  • ডেটা আনতে - ব্যবহারের cursor.execute()ক্যোয়ারী চালানোর জন্য এবং cursor.fetchall(), cursor.fetchone(), cursor.fetchmany(SIZE)ডেটা আনতে


আপনি * এর সাথে সংযুক্ত আছেন ...
জন ফোর্বস 21

5

উপরের উত্তরে কেবল একটি পরিবর্তন। পাইথনের জন্য মাইএসকিএল ইনস্টল করতে কেবল এই আদেশটি চালান run

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

স্মরণ! এটি কেস সেনসিটিভ।


আমি ইয়ম ইনস্টলের মাধ্যমে মাইএসকিউএল-পাইথন ইনস্টল করেছি। ইনস্টলেশন সম্পূর্ণ হয়েছিল তবে আমি মাইএসকিউএলডিবি মডিউলটি আমদানি করতে পারি না। এটি বলে যে এরকম কোনও মডিউল নেই। কোন ধারণা কেন এমন হয়?
ব্যবহারকারী 3527975

আপনি যখন "উপরের উত্তর" বলবেন তখন কোন উত্তরটি আপনি বোঝাচ্ছেন তা পরিষ্কার নয়। আপনার উত্তরটি নিজেই সম্পূর্ণ করুন। আপনি যদি অন্য উত্তরগুলি উল্লেখ করতে চান তবে দয়া করে নির্দিষ্ট উত্তরের সাথে লিঙ্ক করুন।
ফ্লিম

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


পাইথন ৩ এর দ্রুততম সমাধানের প্রস্তাব দেওয়ার জন্য +1। তবে, mysql.connectorএবং _mysqlউভয়কেই আমদানি ত্রুটি দিন (যদিও দ্বিতীয় বিকল্পটি ডকুমেন্টেশন অনুযায়ী কাজ করা উচিত)। import MySQLdbকাজ করে, এবং তারপরেMySQLdb.connect...
সুজানা

4

যদিও আপনি কিছু সদৃশ হিসাবে এই চিহ্নিত করতে পারে এবং মন খারাপ যে আমি অন্য কারো উত্তর অনুলিপি করছি, আমি চাই প্রকৃতই মত জনাব 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()

এখানে গুরুত্বপূর্ণ বিষয় হ'ল চেষ্টা এবং শেষ অবধি। কোডের কার্সার / স্ক্যালস্টেটমেন্ট অংশে যা ঘটেছিল তা বিবেচনা না করে এটি সর্বদা সংযোগগুলি বন্ধ রাখতে দেয় । প্রচুর সক্রিয় সংযোগের কারণে ডিবিএলএডনোসিপিইউ স্পাইক হয়ে যায় এবং একটি ডিবি সার্ভার ক্র্যাশ হতে পারে।

আমি আশা করি এই সতর্কতা সার্ভার এবং শেষ পর্যন্ত কাজগুলি সংরক্ষণে সহায়তা করে! : ডি


3

ঝড়ের দিকেও একবার নজর দিন । এটি একটি সাধারণ এসকিউএল ম্যাপিং সরঞ্জাম যা আপনাকে সহজেই প্রশ্নগুলি না লিখে এসকিউএল এন্ট্রিগুলি সম্পাদনা করতে এবং তৈরি করতে দেয়।

এখানে একটি সহজ উদাহরণ:

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

এটি মাইএসকিএল ডিবি সংযোগ

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 এ সংযুক্ত করতে পারেন connect

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

cursor = db.cursor()

1

প্রথমে ড্রাইভারটি ইনস্টল করুন (উবুন্টু)

  • সুডো পাইথন-পাইপ ইনস্টল করুন

  • sudo পাইপ ইনস্টল করুন - ইউ পিপ

  • sudo apt-get python-dev libmysqlclient-dev ইনস্টল করুন

  • মাইএসকিউএল-পাইথন ইনস্টল করুন sudo

মাইএসকিউএল ডাটাবেস সংযোগ কোড

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

আমি আমার উইন্ডোজ 7-তে পাইপ ইনস্টল করেছি, কেবল পাইপ ইনস্টল করুন সাইমাইএসকিএল

(আপনার সিথনের দরকার নেই) দ্রুত এবং বেদনাদায়ক


3
আপনি এসওতে একটি নতুন প্রশ্ন তৈরি করতে এবং এটির একটি লিঙ্কের সাথে মন্তব্য করতে পারেন।
Lazik

-1

প্রথমে https://dev.mysql.com/downloads/connector/python/ থেকে পাইথন-মাইএসকিএল সংযোগকারী ইনস্টল করুন

পাইথন কনসোলে প্রবেশ করুন:

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

1
প্রশ্নটি কিছুটা বিস্তৃত ছিল, তবে এই উত্তরটি কিছুটা সংকীর্ণ বলে মনে হচ্ছে (অন্তত এই মর্মে যে কোনও একক মডিউল ইনস্টল করা এবং আমদানি করা তা করবে না)। কোনও ব্যাখ্যা ছাড়াই সিঙ্গল কোড ব্লকে শেল এবং অজগর মিলেছে বলে মনে হয় বা কোথা থেকে যায় এবং কী করে তা ইঙ্গিত দেয় না।
ওন্দ্রেজ কে।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.