pub struct MysqlConnection { /* private fields */ }
Available on crate features mysql and mysql_backend only.
Expand description

A connection to a MySQL database. Connection URLs should be in the form mysql://[user[:password]@]host/database_name

Supported loading model implementations

As MysqlConnection only supports a single loading mode implementation it is not required to explicitly specify a loading mode when calling RunQueryDsl::load_iter() or LoadConnection::load

DefaultLoadingMode

MysqlConnection only supports a single loading mode, which loads values row by row from the result set.

use diesel::connection::DefaultLoadingMode;
{ // scope to restrict the lifetime of the iterator
    let iter1 = users::table.load_iter::<(i32, String), DefaultLoadingMode>(connection)?;

    for r in iter1 {
        let (id, name) = r?;
        println!("Id: {} Name: {}", id, name);
    }
}

// works without specifying the loading mode
let iter2 = users::table.load_iter::<(i32, String), _>(connection)?;

for r in iter2 {
    let (id, name) = r?;
    println!("Id: {} Name: {}", id, name);
}

This mode does not support creating multiple iterators using the same connection.

use diesel::connection::DefaultLoadingMode;

let iter1 = users::table.load_iter::<(i32, String), DefaultLoadingMode>(connection)?;
let iter2 = users::table.load_iter::<(i32, String), DefaultLoadingMode>(connection)?;

for r in iter1 {
    let (id, name) = r?;
    println!("Id: {} Name: {}", id, name);
}

for r in iter2 {
    let (id, name) = r?;
    println!("Id: {} Name: {}", id, name);
}

Trait Implementations§

source§

impl Connection for MysqlConnection

source§

fn establish(database_url: &str) -> ConnectionResult<Self>

Establishes a new connection to the MySQL database database_url may be enhanced by GET parameters mysql://[user[:password]@]host/database_name[?unix_socket=socket-path&ssl_mode=SSL_MODE*&ssl_ca=/etc/ssl/certs/ca-certificates.crt]

§

type Backend = Mysql

The backend this type connects to
§

type TransactionManager = AnsiTransactionManager

Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
The transaction manager implementation used by this connection
source§

fn execute_returning_count<T>(&mut self, source: &T) -> QueryResult<usize>where T: QueryFragment<Self::Backend> + QueryId,

Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
Execute a single SQL statements given by a query and return number of affected rows
source§

fn transaction_state(&mut self) -> &mut AnsiTransactionManager

Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
Get access to the current transaction state of this connection Read more
source§

fn transaction<T, E, F>(&mut self, f: F) -> Result<T, E>where F: FnOnce(&mut Self) -> Result<T, E>, E: From<Error>,

Executes the given function inside of a database transaction Read more
source§

fn begin_test_transaction(&mut self) -> QueryResult<()>

Creates a transaction that will never be committed. This is useful for tests. Panics if called while inside of a transaction or if called with a connection containing a broken transaction
source§

fn test_transaction<T, E, F>(&mut self, f: F) -> Twhere F: FnOnce(&mut Self) -> Result<T, E>, E: Debug,

Executes the given function inside a transaction, but does not commit it. Panics if the given function returns an error. Read more
source§

impl<'conn, 'query> ConnectionGatWorkaround<'conn, 'query, Mysql, DefaultLoadingMode> for MysqlConnection

§

type Cursor = StatementIterator<'conn>

Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
The cursor type returned by LoadConnection::load Read more
§

type Row = MysqlRow

Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
The row type used as Iterator::Item for the iterator implementation of ConnectionGatWorkaround::Cursor
source§

impl LoadConnection<DefaultLoadingMode> for MysqlConnection

source§

fn load<'conn, 'query, T>( &'conn mut self, source: T ) -> QueryResult<LoadRowIter<'conn, 'query, Self, Self::Backend>>where T: Query + QueryFragment<Self::Backend> + QueryId + 'query, Self::Backend: QueryMetadata<T::SqlType>,

Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
Executes a given query and returns any requested values Read more
source§

impl MigrationConnection for MysqlConnection

source§

fn setup(&mut self) -> QueryResult<usize>

Setup the following table: Read more
source§

impl R2D2Connection for MysqlConnection

Available on crate feature r2d2 only.
source§

fn ping(&mut self) -> QueryResult<()>

Check if a connection is still valid
source§

fn is_broken(&mut self) -> bool

Checks if the connection is broken and should not be reused Read more
source§

impl SimpleConnection for MysqlConnection

source§

fn batch_execute(&mut self, query: &str) -> QueryResult<()>

Execute multiple SQL statements within the same string. Read more
source§

impl<'b, Changes, Output> UpdateAndFetchResults<Changes, Output> for MysqlConnectionwhere Changes: Copy + Identifiable + AsChangeset<Target = <Changes as HasTable>::Table> + IntoUpdateTarget, Changes::Table: FindDsl<Changes::Id>, Update<Changes, Changes>: ExecuteDsl<MysqlConnection>, Find<Changes::Table, Changes::Id>: LoadQuery<'b, MysqlConnection, Output>, <Changes::Table as Table>::AllColumns: ValidGrouping<()>, <<Changes::Table as Table>::AllColumns as ValidGrouping<()>>::IsAggregate: MixedAggregates<No, Output = No>,

source§

fn update_and_fetch(&mut self, changeset: Changes) -> QueryResult<Output>

See the traits documentation.
source§

impl Send for MysqlConnection

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<C> BoxableConnection<<C as Connection>::Backend> for Cwhere C: Connection + Any,

source§

fn as_any(&self) -> &(dyn Any + 'static)

Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
Maps the current connection to std::any::Any
source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoSql for T

source§

fn into_sql<T>(self) -> AsExprOf<Self, T>where Self: AsExpression<T> + Sized, T: SqlType + TypedExpressionType,

Convert self to an expression for Diesel’s query builder. Read more
source§

fn as_sql<'a, T>(&'a self) -> AsExprOf<&'a Self, T>where &'a Self: AsExpression<T>, T: SqlType + TypedExpressionType,

Convert &self to an expression for Diesel’s query builder. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

source§

fn vzip(self) -> V