網上很多代碼給的連接數據庫是連的sqlite的例子,按照以下方法寫沒問題,我還用了ORM
# -*- coding:utf-8 -*-
from sqlalchemy import create_engine,Column,Integer,String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
dbPath = 'sqlite:////Users/mbp/Downloads/JA.db'
engine = create_engine(dbPath,echo=True)
Session = sessionmaker(bind=engine)
session = Session()
Base = declarative_base()
class Actresses(Base):
__tablename__ = 'JA_NAME'
id = Column('id', Integer, primary_key=True, autoincrement=True)
name = Column('NAME_URL',String)
nameUrl = Column('NAME',String)
act = session.query(Actresses).all()
print act
如果有同學依葫蘆畫瓢把數據庫地址直接改成mysql的連接就會報錯
raise EnvironmentError("%s not found" % (mysql_config.path,))
原因是使用sqlalchemy連接mysql的話光安裝sqlalchemy這個庫還不夠,還要安裝mysql-python這個驅動庫
image.png
裝好后,代碼中也不需要
import
,直接運行下就好了,完整代碼如下,重點就是在安裝了sqlalchemy之后還要再安裝下mysql-python
# -*- coding:utf-8-*-
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
from sqlalchemy.sql import select
import re
metadata = MetaData()
print_order = Table('print_order', metadata,
Column('id', Integer, primary_key=True, autoincrement=True),
Column('order_id', String),
Column('Ten_or_Ali_order_id', String),
Column('payment_state', String),
Column('fee', String),
Column('print_num', String),
Column('consignee_name', String),
Column('consignee_phone', String),
Column('consignee_addr', String),
Column('origin_pic_name', String),
Column('final_pic_name', String),
Column('print_pic_name', String),
Column('origin_pic_name', String),
Column('spec_name', String),
Column('serial_number', String),
Column('payment_time', String)
)
class LeQiMySQL(object):
def __init__(self):
self.dbPath = 'mysql://root:root@127.0.0.1:3306/DB_NAME'
self.engine = create_engine(self.dbPath, encoding='utf-8', echo=True)
self.conn = self.engine.connect()
print 'LeQiMySQl init'
def searchPrintOrderWithSerialNumber(string):
phoneNum = re.match(r"0?(13|14|15|16|17|18)[0-9]{9}", string)
print phoneNum
db = LeQiMySQL()
end