sqlalchemy中create_engine用法
Database Urls
The
create_engine()
function produces an
Engine
object based on a URL. These URLs follow
RFC-1738
, and usually can include username, password, hostname, database name as well as optional keyword arguments for additional configuration. In some cases a file path is accepted, and in others a “data source name” replaces the “host” and “database” portions. The typical form of a database URL is:
<pre style="margin: 5px 0px; padding: 10px; font-size: 1.2em; background-color: rgb(240, 240, 240); border: 1px solid rgb(204, 204, 204); box-shadow: rgb(223, 223, 223) 2px 2px 3px; overflow: auto; line-height: 1.3em;"> dialect+driver://username:password@host:port/database </pre>
Dialect names include the identifying name of the SQLAlchemy dialect, a name such as
sqlite
,
mysql
,
postgresql
,
oracle
, or
mssql
. The drivername is the name of the DBAPI to be used to connect to the database using all lowercase letters. If not specified, a “default” DBAPI will be imported if available - this default is typically the most widely known driver available for that backend.
Examples for common connection styles follow below. For a full index of detailed information on all included dialects as well as links to third-party dialects, see Dialects .
PostgreSQL
The PostgreSQL dialect uses psycopg2 as the default DBAPI. pg8000 is also available as a pure-Python substitute:
<pre style="margin: 5px 0px; padding: 10px; font-size: 1.2em; background-color: rgb(240, 240, 240); border: 1px solid rgb(204, 204, 204); box-shadow: rgb(223, 223, 223) 2px 2px 3px; overflow: auto; line-height: 1.3em;"># default
engine = create_engine('
postgresql://scott:tiger@localhost/mydatabase'
)
psycopg2
engine = create_engine(' postgresql+psycopg2://scott:tiger@localhost/mydatabase' )
pg8000
engine = create_engine(' postgresql+pg8000://scott:tiger@localhost/mydatabase' )</pre>
More notes on connecting to PostgreSQL at PostgreSQL .
MySQL
The MySQL dialect uses mysql-python as the default DBAPI. There are many MySQL DBAPIs available, including MySQL-connector-python and OurSQL:
<pre style="margin: 5px 0px; padding: 10px; font-size: 1.2em; background-color: rgb(240, 240, 240); border: 1px solid rgb(204, 204, 204); box-shadow: rgb(223, 223, 223) 2px 2px 3px; overflow: auto; line-height: 1.3em;"># default
engine = create_engine('
mysql://scott:tiger@localhost/foo'
)
mysql-python
engine = create_engine(' mysql+mysqldb://scott:tiger@localhost/foo' )
MySQL-connector-python
engine = create_engine(' mysql+mysqlconnector://scott:tiger@localhost/foo' )
OurSQL
engine = create_engine(' mysql+oursql://scott:tiger@localhost/foo' )</pre>
More notes on connecting to MySQL at MySQL .
Oracle
The Oracle dialect uses cx_oracle as the default DBAPI:
<pre style="margin: 5px 0px; padding: 10px; font-size: 1.2em; background-color: rgb(240, 240, 240); border: 1px solid rgb(204, 204, 204); box-shadow: rgb(223, 223, 223) 2px 2px 3px; overflow: auto; line-height: 1.3em;">engine = create_engine(' oracle://scott:tiger@127.0.0.1:1521/sidname' )
engine = create_engine('oracle+cx_ oracle://scott:tiger@tnsname' )</pre>
More notes on connecting to Oracle at Oracle .
Microsoft SQL Server
The SQL Server dialect uses pyodbc as the default DBAPI. pymssql is also available:
<pre style="margin: 5px 0px; padding: 10px; font-size: 1.2em; background-color: rgb(240, 240, 240); border: 1px solid rgb(204, 204, 204); box-shadow: rgb(223, 223, 223) 2px 2px 3px; overflow: auto; line-height: 1.3em;"># pyodbc
engine = create_engine('
mssql+pyodbc://scott:tiger@mydsn'
)
pymssql
engine = create_engine(' mssql+pymssql://scott:tiger@hostname:port/dbname' )</pre>
More notes on connecting to SQL Server at Microsoft SQL Server .
SQLite
SQLite connects to file-based databases, using the Python built-in module
sqlite3
by default.
As SQLite connects to local files, the URL format is slightly different. The “file” portion of the URL is the filename of the database. For a relative file path, this requires three slashes:
<pre style="margin: 5px 0px; padding: 10px; font-size: 1.2em; background-color: rgb(240, 240, 240); border: 1px solid rgb(204, 204, 204); box-shadow: rgb(223, 223, 223) 2px 2px 3px; overflow: auto; line-height: 1.3em;"># sqlite://<nohostname>/<path>
where <path> is relative:
engine = create_engine('sqlite:///foo.db')</pre>
And for an absolute file path, the three slashes are followed by the absolute path:
<pre style="margin: 5px 0px; padding: 10px; font-size: 1.2em; background-color: rgb(240, 240, 240); border: 1px solid rgb(204, 204, 204); box-shadow: rgb(223, 223, 223) 2px 2px 3px; overflow: auto; line-height: 1.3em;">#Unix/Mac - 4 initial slashes in total
engine = create_engine('sqlite:////absolute/path/to/foo.db')
Windows
engine = create_engine('sqlite:///C:\path\to\foo.db')
Windows alternative using raw string
engine = create_engine(r'sqlite:///C:\path\to\foo.db')</pre>
To use a SQLite
:memory:
database, specify an empty URL:
<pre style="margin: 5px 0px; padding: 10px; font-size: 1.2em; background-color: rgb(240, 240, 240); border: 1px solid rgb(204, 204, 204); box-shadow: rgb(223, 223, 223) 2px 2px 3px; overflow: auto; line-height: 1.3em;">engine = create_engine('sqlite://')</pre>
sqlite3
by default.
engine = create_engine('sqlite:////absolute/path/to/foo.db')
:memory:
database, specify an empty URL:
More notes on connecting to SQLite at SQLite .
Others
See Dialects , the top-level page for all additional dialect documentation.