2012-01-19 12 views
13

का उपयोग कर MySQLdb डेटाबेस बनाएं मुझे डेटाबेस और तालिकाओं को बनाने में समस्याएं आ रही हैं। डेटाबेस को एक पायथन लिपि के भीतर बनाया जाना चाहिए।पायथन स्क्रिप्ट

#connect method has 4 parameters: 
#localhost (where mysql db is located), 
#database user name, 
#account password, 
#database name  
db1 = MS.connect(host="localhost",user="root",passwd="****",db="test") 

रिटर्न

_mysql_exceptions.OperationalError: (1049, "Unknown database 'test'") 

तो स्पष्ट रूप से, DB1 पहले बनाया जाना है, लेकिन कैसे की जरूरत है? मैंने कनेक्ट() कथन से पहले क्रिएट करने का प्रयास किया है लेकिन त्रुटियां प्राप्त करें।

डेटाबेस बनने के बाद, मैं टेबल कैसे बना सकता हूं? धन्यवाद, टॉम

यहां वाक्यविन्यास है, यह काम करता है, कम से कम पहली बार। दूसरी बार स्वाभाविक रूप से लौटाता है कि डीबी पहले से मौजूद है। अब ड्रॉप कमांड का सही तरीके से उपयोग करने का तरीका जानने के लिए।

db = MS.connect(host="localhost",user="root",passwd="****") 
    db1 = db.cursor() 
    db1.execute('CREATE DATABASE test1') 

तो यह पहली बार महान काम करता है। दूसरी बार एक चेतावनी प्रदान करता है "डीबी पहले से मौजूद है"। इससे निपटने के लिए कैसे? निम्नलिखित है कि मुझे लगता है कि इसे कैसे काम करना चाहिए, लेकिन नहीं। या यह एक कथन कथन होना चाहिए, यह देखना चाहिए कि यह पहले से मौजूद है, तो पॉप्युलेट न करें?

import warnings 
warnings.filterwarnings("ignore", "test1") 
+1

नहीं अशिष्ट होना करने के लिए लेकिन आप इसे googling की कोशिश की है? कनेक्ट से डीबी = "टेस्ट" ड्रॉप करें और http://dev.mysql.com/doc/refman/5.0/en/sql-syntax.html या http://www.w3schools.com/sql/default पढ़ें .asp –

+0

हां, बहुत सारे गुगलिंग (और आरटीएफएम कठोर नहीं है, लेकिन मैं नहीं पूछूंगा कि मुझे यह मिल सकता है)। और हाँ जब मैं "परीक्षण" छोड़ देता हूं तो कोई त्रुटि नहीं होती है। प्रश्न यह है कि आप पीबीथन का उपयोग करके डीबी कैसे बनाते हैं, एसक्यूएल नहीं। – Tom

+0

यहां वाक्यविन्यास है, यह कम से कम पहली बार काम करता है। दूसरी बार स्वाभाविक रूप से लौटाता है कि डीबी पहले से मौजूद है। अब ड्रॉप कमांड का सही तरीके से उपयोग करने का तरीका जानने के लिए। डीबी = एमएस.कनेक्ट (मेजबान = "लोकलहोस्ट", उपयोगकर्ता = "रूट", passwd = "****") db1 = db.cursor() db1.execute ('डेटाबेस बनाएं test1') – Tom

उत्तर

12

उपयोग CREATE DATABASE डेटाबेस बनाने के लिए:

db1 = MS.connect(host="localhost",user="root",passwd="****") 
cursor = db1.cursor() 
sql = 'CREATE DATABASE mydata' 
cursor.execute(sql) 

उपयोग CREATE TABLE तालिका बनाने के लिए:

sql = '''CREATE TABLE foo (
     bar VARCHAR(50) DEFAULT NULL 
     ) ENGINE=MyISAM DEFAULT CHARSET=latin1 
     ''' 
cursor.execute(sql) 

विकल्पों में से एक बहुत कुछ है जब एक तालिका बनाने हैं। क्या आप वाकई क्या सही एसक्यूएल होना चाहिए नहीं हैं, तो यह phpmyadmin की तरह एक ग्राफिकल उपकरण का उपयोग करने के लिए एक तालिका बनाने के लिए मदद कर सकते हैं, और फिर SHOW CREATE TABLE का उपयोग खोजने के लिए क्या एसक्यूएल यह बनाने के लिए आवश्यक है:

mysql> show create table foo \G 
*************************** 1. row *************************** 
     Table: foo 
Create Table: CREATE TABLE `foo` (
    `bar` varchar(50) DEFAULT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 
1 row in set (0.00 sec) 

phpmyadmin कर सकते हैं यह भी आपको दिखाता है कि एसक्यूएल यह किस तरह के संचालन के लिए उपयोग किया जाता है। यह कुछ बुनियादी एसक्यूएल सीखने का एक सुविधाजनक तरीका हो सकता है।

एक बार जब आप इसका प्रयोग कर लेंगे, तो आप पाइथन में एसक्यूएल लिख सकते हैं।

+0

मुझे यह पता चलने के लिए phpmyadmin पसंद है कि क्या हो रहा है। धन्यवाद! – Tom

7

मुझे लगता है कि समाधान बहुत आसान है, का उपयोग करें "नहीं करता है, तो":

sql = "CREATE DATABASE IF NOT EXISTS test1" 
db1.execute(sql) 
6
import MySQLdb 


# Open database connection (If database is not created don't give dbname) 
db = MySQLdb.connect("localhost","yourusername","yourpassword","yourdbname") 

# prepare a cursor object using cursor() method 
cursor = db.cursor() 

# For creating create db 
# Below line is hide your warning 
cursor.execute("SET sql_notes = 0; ") 
# create db here.... 
cursor.execute("create database IF NOT EXISTS yourdbname") 



# create table 
cursor.execute("SET sql_notes = 0; ") 
cursor.execute("create table IF NOT EXISTS test (email varchar(70),pwd varchar(20));") 
cursor.execute("SET sql_notes = 1; ") 

#insert data 
cursor.execute("insert into test (email,pwd) values('[email protected]','test')") 

# Commit your changes in the database 
db.commit() 

# disconnect from server 
db.close() 

#OUTPUT 

mysql> select * from test; 
+-----------------+--------+ 
| email   | pwd | 
+-----------------+--------+ 
| [email protected] | test | 
+-----------------+--------+ 
संबंधित मुद्दे